Azure AD OAuth Client Flow

νšŒμ‚¬μ—μ„œ μ›Ήμ‚¬μ΄νŠΈλ₯Ό λ§Œλ“€λ‹€ 보면 api 와 frontλ₯Ό λ§Œλ“€μ–΄μ•Ό ν•œλ‹€.

여기에 인증을 azure ad(νšŒμ‚¬μ˜ μœ μ €μ •λ³΄)와 κ°™μœΌλ©΄ νŽΈν• λ•Œκ°€ μžˆλ‹€.

Azure ADλ₯Ό μ‚¬μš©ν•˜μ—¬ μœ μ € 둜그인 ν•˜λŠ” 뢀뢄은 λ”°λ‘œ μ •λ¦¬ν•˜κΈ°λ‘œ ν•˜κ³  μ˜€λŠ˜μ€ api key처럼 μ‚¬μš©ν• μˆ˜ μž‡λŠ” 뢀뢄을 ν™•μΈν•΄λ³΄μž.

api key

Azure adλŠ” oauth2λ₯Ό μ‚¬μš©ν•œλ‹€.

api keyλŠ” oauth2μ—μ„œ client credential flow둜 μ‚¬μš©ν•œλ‹€.

ν΄λΌμ΄μ–ΈνŠΈμ— μ‹œν¬λ¦Ώμ„ 보내면 azure adκ°€ access token을 λ°œκΈ‰ν•΄μ€€λ‹€.

ꡬ쑰

azure ad에 기쑴에 resource-apiλΌλŠ” api앱이 μžˆλ‹€κ³  ν•˜μž.

postman으둜 이것을 ν…ŒμŠ€νŠΈν•΄λ³΄κ³  μ‹Άλ‹€.

postman도 code flowλ₯Ό μ§€μ›ν•˜λ‚˜ μ—¬κΈ°μ„œλŠ” client credential flowλ₯Ό μ‚¬μš©ν•œλ‹€.

client λ§Œλ“€κΈ°

azure adμ—μ„œ app을 ν•˜λ‚˜ 더 μΆ”κ°€ν•œλ‹€.

이름은 mycli둜 ν•˜μž.

λ§Œλ“€κ³  λ‚˜λ©΄ λ‹€μŒμ²˜λŸΌ 보인닀.

mycli μ„€μ •

이제 섀정을 ν•˜μž.

일단 이 정보λ₯Ό 잘 μ μ–΄λ‘μž.

endpointλŠ” ν΄λ¦­ν•˜κ³  λ‚˜λ©΄ λ‹€μŒ μ£Όμ†Œλ₯Ό 볡사해둔닀.

token end pointλ₯Ό 잘 볡사해둔닀.

이제 client secretλ₯Ό λ°œκΈ‰ν•˜μž.

이제 λ°œκΈ‰κΉŒμ§€ 됬닀.

이제 Api permission을 μ„€μ •ν•΄μ•Όν•˜λŠ”λ° μ—¬κΈ°μ—μ„œλŠ” μ‚¬μš©ν•˜κ³  싢은 apiμ—μ„œ κΆŒν•œμ„ μ˜€ν”ˆμ„ ν•΄μ€˜μ•Όν•œλ‹€.

api 앱에 κ°€μ„œ λ‹€μŒμ²˜λŸΌ κΆŒν•œμ„ λ§Œλ“€μ–΄μ€€λ‹€.

api app에 role μΆ”κ°€

api μ•±μ—μ„œ app rolesλ₯Ό μΆ”κ°€ν•΄μ€€λ‹€.

μ΄λ ‡κ²Œ ν•˜κ³  μΆ”κ°€ν•˜λ©΄ 둀이 μΆ”κ°€λœλ‹€.

mycli μ•±μ—μ„œ 방금 μΆ”κ°€ν•œ 둀을 μ‚¬μš©

이제 role을 μ‚¬μš©ν•΄λ³΄μž.

Api permission을 μ„€μ •ν•˜μž.

μ„€μ •ν•˜κ³  λ‚˜λ©΄ admin에 κΆŒν•œμ„ ν•„μš”λ‘œ ν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€ 이건 adminμ—κ²Œ μ—°λ½ν•˜μ—¬ ν—ˆκ°€λ₯Ό 해달라고 ν•΄μ•Όν•œλ‹€.

ν—ˆκ°€κ°€ λ˜κ³ λ‚˜λ©΄ ν¬μŠ€νŠΈλ§¨μ—μ„œ ν…ŒμŠ€νŠΈλ₯Ό ν•΄λ³΄μž.

ν…ŒμŠ€νŠΈ

그림처럼 μ„€μ •ν•˜κ³  μš”μ²­μ„ 날리면 access token을 λ°›μ•„μ˜¨λ‹€.

token endpointμ£Όμ†Œλ₯Ό μ‚¬μš© ν•œλ‹€.

grant_type은 client_credential이닀.

client_idλŠ” mycli의 client idλ₯Ό μ‚¬μš©ν•œλ‹€.

μ€‘μš”) scopeλŠ” μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” api에 ν•΄λ‹Ήν•˜λŠ” scopeλ₯Ό μ‚¬μš©ν•œλ‹€.

api에 κ°€μ„œ 이 정보λ₯Ό κ°€μ Έμ™€μ„œ μ‚¬μš©ν•œλ‹€. 그리고 κ·Έ 뒀에 /.defaultλ₯Ό λΆ™μ—¬μ•Όν•œλ‹€.

api://xxxxxxxx/.default

이런 ν˜•νƒœμ΄λ‹€.

이제 이 μ—‘μ„ΈμŠ€ 토큰을 μ‚¬μš©ν•˜μ—¬ apiλ₯Ό ν˜ΈμΆœν•΄λ³΄μž.

토큰을 λ³΅μ‚¬ν•΄μ„œ 여기에 λ„£κ³  sendλ₯Ό ν•˜λ©΄ κ²°κ³Όλ₯Ό κ°€μ Έμ˜¨λ‹€.

이제 μ™„λ£Œ

이제 μ™„λ£Œ λ˜μ—ˆλ‹€. λ‹€μŒμ—λŠ” cli ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€μ–΄μ„œ μ–΄λ–»κ²Œ μœ„ λ‚΄μš©μ„ μ–΄λ–»κ²Œ ν•˜λŠ”μ§€ μ•Œμ•„λ³΄μž.

λ‹€μŒ 단계

https://teamsmiley.gitbook.io/devops/go-lang/cli-azuread

이걸 μ½μ–΄λ³΄μž.

Last updated

Was this helpful?