본문 바로가기
프로그래밍

Azure AD로 OAuth 2.0을 사용해 App Service 와 API Management 보안 설정

by 도장깨기 2021. 7. 30.
728x90
반응형

안녕하세요. 

 

이전에 Azure App services 생성 그리고 API Management 구성을 했다면

오늘은 Portal에서  Azure AD로 OAuth 2.0을 사용해서  App Service 그리고 API Management에 보안 설정을 해보도록 하겠습니다.

 

만약 이전 과정인 API Management 생성 방법이 궁금하시다면 

아래 링크를 참조해주세요.

 

https://otp-0613.tistory.com/104

 

Castorpollux

맛집/카페/데이트/꿀팁/프로그래밍등 다양한 정보를 소개하는 블로그 입니다.

otp-0613.tistory.com

먼저 이전 과정을 통해 App service와 api management를 모두 생성 했다는 가정하에 진행 하겠습니다.

당연히 테스트할 api도 개발이 완료된 상태이겠죠!

 

 

 

1. 먼저 Azure Active Directory에서 앱을 등록해줍니다. 

 

 

앱 이름만 설정해 주고 생성 

 

 

2. 매니페스트 탭에서 저희는 버전 2로 설정할것이기 때문에 

accessTokenAcceptedVersion의 값을 2로 설정해 줍니다. ( 기본은 null 입니다.)

 

 

 

3. 그 다음 설정할 값은 API 표시 탭에서 설정 버튼을 눌러주고

 

애플리케이션 ID URI를 설정해줍니다. 값은 자동으로 설정되니 해당 URL을 그대로 사용하시면됩니다.

 

4, 이제 데이터 및 기능에 대한 엑세스 제한을 위해 사용자 지정범위를 정합니다. 

범위 추가를 선택하고 사용할 범위 이름을 정해서 추가해줍니다.

이후에 클라이언트 앱에 이 값을 추가할것입니다.

 

 

 

5. 이제 인증 탭으로 넘어가서 플랫폼 추가 버튼을 눌러줍니다.

리디렉션 URI 설정을 위함입니다.

 

 

웹 선택

 

 

리디렉션 URI에 <api host url>/.auth/login/aad/callback을 입력해 주고 

 

아래에 ID토큰을 발급하도록 설정할것이기 때문에 체크해 줍니다 (캡처사진에는 실수로 빠졌습니다. 체크해야합니다)

 

 

 

 

6. 보안을 적용할 App Service로 잠시 이동해서 

App Service의 인증탭에 들어갑니다. 

 

따로 설정되어있지않다면 위와같은 상황일 텐데 ID 공급자 추가를 선택합니다.

 

 

 

MIcrosoft를 선택하면 아래에 이름 또는 앱ID를 정하라고 나오는데 

우리가 바로 이전에 생성한 그 앱(1번 과정)을 지정해주시면 됩니다. 

그럼 아래에 자동으로 값이 입력됩니다.

 

그 다음에 추가 선택

 

 

7. 이제 저희가 처음에 Azure AD에서 앱 생성한 것과 같이 

앱을 하나 더 생성해줍니다. 

이번엔 클라이언트 App을 생성해줄것 입니다. 

 

8. Azure AD에서 새앱을 생성했다면 이번엔 API 사용권한 탭에서

권한추가를 선택해줍니다.

 

 

권한 추가를 선택하면 우측처럼 API 사용권한 요청 창이 뜨는데 

내 API로 들어가서 아까전에 먼저 생성했던(1번과정) 데모앱이 보입니다. 

선택하면

 

아까전에 데모 앱에서 생성했던 user_impersonation이라는 사용자 지정 범위 권한(4번 과정)이 보입니다.

이 권한을 추가해줍니다. 

 

 

 

관리자 동의가 필요하기 때문에 

Azure 관리자 권한을 가진 계정으로  관리자 동의 허용을 해줘야합니다.

관리자 동의 허용이 성공하면 상태가 허용상태로 변경됩니다. 

 

 

 

9. 클라이언트 앱 역시 매니페스트 탭에서 accessTokenAcceptedVersion을 2로 설정해줍니다.

 

 

 

10. 그 다음 인증서 및 암호 탭에서 

클라이언트 암호를 설정해 시크릿 코드를 생성해야합니다. 

값이 생성된 이후 아래처럼 값이 보이지 않기 때문에 따로 저장해 두는 것이 좋습니다. 

 

 

 

이제 모든 설정이 끝났다면 정상적으로 발급되는지 확인해 볼텐데요.

저 같은경우 postman을 사용해서 토큰을 생성했습니다. 하나씩 살펴보면

TypeOAuth 2.0 

Token Name은 아무렇게 원하는 이름 설정하시면 되고 

Grant Type클라이언트 자격증명(Client Credentials) -> 위에서 앱을 클라이언트 자격증명 방식으로 설정했기 때문에

그리고 Access Token URL 같은 경우 확인하는 방법을 알려드릴게요.

 

Azure AD탭에 앱등록으로 가시면 상단에 엔드포인트라고 있습니다.

그럼 엔드포인트 URL이 나오는데요 그중에 저희는 버전 2를 사용하기 때문에 위에 2개를 보시면 되는데 

토큰 발급 주소이기때문에 2번째 선택되어있는 login.microsoftonline.com/<tenantID>/oauth2/v2.0/token 형식의 url을 넣어 주시면 됩니다.

 

그다음 Client ID는 위 캡처본처럼 저희가 생성한 Client App의 애플리케이션 ID를 넣어주시면되고

Client secret은 클라이언트앱 - 인증서 및 암호 탭에서 생성했던 클라이언트 암호의 값을 넣어 주면됩니다.(10번 과정) 

ex) .cwK~JgeKgC24d~Gz07.X8m9~y-42NDFh-

마지막으로 Scope는 이 글 초반에 API 표시 탭에서 생성했던 애플리케이션 ID URL 기억나시죠.(3번 과정) 그 주소에 /.default를 추가해 

아래 예시와 같은 형태로 넣어줍니다.

ex) api://e19d181b-xxxx-xxxx-xxxx-44a4d33a411f/.default

 

 

모두 구성이 완료되었으면 아래와 같이

성공적으로 토큰이 생성되는 것을 확인할 수 있습니다. 

 

 

 

11. 여기까지 확인이 되면 이제 최종 목표 였던 API Management에 OAuth2.0을 적용해 보도록 하겠습니다.

 

API Management 서비스 탭으로 가면 OAuth2.0 + OpenID Connect라는 탭이 있습니다.

해당 탭으로 가서 OAuth2 서비스 추가를 선택해 줍니다. 

 

원하는 이름을 적으시면되고 중요하게 체크해야될 부분은

11-1. 권한 부여 유형을 클라이언트 자격 증명으로 설정해야하고

11-2. 권한 부여 요청 방법에 기본 GET에 POST도 추가해주고 

11-3. 토큰 엔드포인트 URL에는 제가 위에서 알려드렸던 엔드포인트 확인하는 부분(10번 과정)을 찾아서 넣어주시면됩니다.

 

 

12. 그리고 적용할 API 탭으로 가서 Settings 설정에 들어가면 Security라는 탭에서 보안설정이 가능합니다.

기본적으로 None으로 되어있을텐데 저희는 OAuth 2.0을 선택해주고 바로 위에서 설정한 OAuth2.0 서비스(11번 과정)를 추가합니다.

 

자 이제 설정이 모두 완료 되었습니다. 

생성했던 토큰을 이용해 API를 호출해봅시다.

 

 

잘작동되네요!!! 

 

 

꽤 길게 캡처 화면과 함께 설명을 드렸는데요. 

아무래도 과정이 꽤있다보니 깔끔하게 설명되지않은 부분들이 있을 수 있습니다.

만약 이해가 안되신다면 제가 이 글을 작성하기 위해 참고한 영상을 아래 링크에 첨부하오니 

해당 영상 보시고 해보시길 바랍니다!!

 

참고 영상

https://www.youtube.com/watch?v=TRrBqNYtyj8

 

 

 

 

728x90
반응형

댓글