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