Azure AD는 클라우드 환경에서 신뢰할 수 있는 인증 및 사용자 관리 서비스를 제공하는 Microsoft의 Identity and Access Management(IAM) 서비스입니다. Authlib는 Python에서 인증 및 권한 부여를 쉽게 구현할 수 있도록 도와주는 라이브러리입니다. 이번에는 Authlib를 사용하여 Python 애플리케이션에 Azure AD 인증을 추가하는 방법을 알아보겠습니다.
Authlib 설치하기
먼저, Authlib를 설치해야 합니다. 다음 명령을 사용하여 Authlib를 설치할 수 있습니다:
pip install authlib
Azure AD 애플리케이션 등록하기
Azure AD에 애플리케이션을 등록해야 합니다. 등록한 애플리케이션에서 인증 및 권한 부여를 관리할 수 있습니다. 다음 단계를 따라 Azure AD에 애플리케이션을 등록하세요:
- Azure Portal에 로그인하세요.
- Azure Active Directory 서비스로 이동합니다.
- “App Registrations”을 선택하고 “New Registration”을 클릭하세요.
- 애플리케이션에 이름을 지정하고, “Supported account types”을 선택합니다.
- Redirect URI를 입력합니다. 이 URI는 인증 후 리디렉션되는 애플리케이션의 엔드포인트입니다.
- 등록 후에는 애플리케이션의 “Application (client) ID”를 기억해 두세요. 이 값은 인증 흐름에서 사용됩니다.
Python 애플리케이션에 Azure AD 인증 추가하기
이제 Python 애플리케이션에 Azure AD 인증을 추가할 차례입니다. 다음 단계를 따라 진행하세요:
- Flask를 사용하여 간단한 Python 웹 애플리케이션을 설정합니다.
- Authlib의
OAuth.register
를 사용하여 Azure AD의 인증 엔드포인트와 토큰 엔드포인트를 등록합니다.from authlib.integrations.flask_client import OAuth oauth = OAuth() oauth.register('azuread', client_id='<YOUR_CLIENT_ID>', client_secret='<YOUR_CLIENT_SECRET>', server_metadata_url='https://login.microsoftonline.com/<YOUR_TENANT>/.well-known/openid-configuration', scope='openid profile email', client_kwargs={'scope': 'User.Read'})
이 때
<YOUR_CLIENT_ID>
와<YOUR_CLIENT_SECRET>
에는 애플리케이션 등록 시 생성한 “Application (client) ID”와 client secret 값을 사용해야 합니다.<YOUR_TENANT>
에는 Azure AD이름에 해당하는 값(e.g.,common
,organizations
,consumers
)을 입력합니다. - 사용자가 인증 및 권한 부여를 받을 수 있는 엔드포인트를 설정합니다.
from flask import Flask, url_for, redirect app = Flask(__name__) @app.route('/login') def login(): redirect_uri = url_for('auth', _external=True) return oauth.azuread.authorize_redirect(redirect_uri) @app.route('/auth') def auth(): token = oauth.azuread.authorize_access_token() # 토큰을 사용하여 사용자 정보를 가져올 수 있습니다. # ... return 'Authenticated Successfully!'
login
함수는 사용자를 Azure AD 인증으로 리디렉션시키고,auth
함수에서는 인증 후 토큰을 가져올 수 있습니다. - Flask 애플리케이션을 실행합니다.
flask run
이제 애플리케이션에는 Azure AD 인증이 추가되었습니다. 사용자는 /login
엔드포인트를 통해 Azure AD 로그인 페이지로 이동하고, 인증 후 /auth
엔드포인트로 리디렉션됩니다. 이 때, 토큰을 사용하여 사용자 정보를 가져와서 필요한 작업을 수행할 수 있습니다.
더 자세한 내용은 Authlib 문서와 Azure AD 문서를 참고하세요.