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?