자습서: 보호 API 호출 및 결과 표시
이전 자습서에서는 애플리케이션에 로그인 및 로그아웃 환경을 추가했습니다. 이제 로그인한 사용자가 보호 웹 API를 호출할 수 있도록 이러한 기능을 빌드할 수 있습니다. 이 자습서에서는 Microsoft Graph API를 호출하고 로그인한 사용자의 프로필 정보를 표시합니다.
이 자습서에서:
- 보호된 다운스트림 API를 호출하는 코드 추가
- 응용 프로그램 실행 및 테스트
API를 호출하고 결과 표시
보호된 API를 호출하려면 먼저 다음과 같이 auth.get_token_for_user
을(를) 호출하여 현재 사용자의 액세스 토큰을 획득해야 합니다.
@app.route("/call_downstream_api")
def call_downstream_api():
token = auth.get_token_for_user(app_config.SCOPE)
if "error" in token:
return redirect(url_for("login"))
# Use access token to call downstream api
api_result = requests.get(
app_config.ENDPOINT,
headers={'Authorization': 'Bearer ' + token['access_token']},
timeout=30,
).json()
return render_template('display.html', result=api_result)
사용자가 /call_downstream_api
URL 경로로 이동하면 Flask는 먼저 auth.get_token_for_user(app_config.SCOPE)
을(를) 사용하여 액세스 토큰을 가져오려고 시도하는 call_downstream_api()
함수를 호출합니다. 인증 문제 또는 토큰에 오류가 있는 경우 재인증을 위해 사용자를 로그인 페이지로 리디렉션합니다.
앱이 액세스 토큰을 성공적으로 가져오는 경우 requests.get(...)
메서드를 사용하여 다운스트림 API에 대한 HTTP 요청을 만듭니다. 요청에서 다운스트림 API URL이 app_config.ENDPOINT
에서 지정됩니다. 또한 요청 헤더의 Authorization
필드에 액세스 토큰을 전달합니다.
다운스트림 API(Microsoft Graph API)에 대한 성공적인 요청은 api_result
변수에 저장된 JSON 응답을 반환하고 렌더링을 위해 display.html
템플릿에 전달됩니다.
코드를 추가하여 앱 실행
앱을 실행하려면 app.py 파일의 끝에서 다음 코드 조각을 추가합니다.
if __name__ == "__main__":
app.run()
앱 테스트
다음 단계에 따라 웹앱에서 로그인, API 호출 및 로그아웃 환경을 테스트합니다.
아직 없는 경우 .env.sample 파일의 자리 표시자 값을 Microsoft Entra 앱 등록 세부 정보(클라이언트 ID, 클라이언트 암호 및 기관 URL)로 바꿉니다.
앱에 대한 가상 환경을 만듭니다.
py -m venv .venv .venv\scripts\activate
pip
를 사용하여 요구 사항을 설치합니다.pip install -r requirements.txt
명령줄에서 앱을 실행합니다. 앱이 이전에 구성한 리디렉션 URI와 동일한 포트에서 실행되고 있는지 확인합니다.
flask run --host=localhost --port=5000
터미널에 표시되는 https URL(예: https://localhost:5000)을 복사하여 브라우저에 붙여넣습니다. 프라이빗 또는 Incognito 브라우저 세션을 사용하는 것이 좋습니다.
로그인 창이 나타나면 로그인할 계정을 입력하고 다음을 선택합니다.
브라우저에서 계정에 대한 암호를 입력하도록 리디렉션합니다. 암호를 입력하고 로그인을 선택합니다.
이 시점에서 로그인 흐름은 인증자 앱을 사용하는 다단계 인증과 같이 조직에 필요한 보안 정보에 따라 달라질 수 있습니다.
로그인 상태 유지에서 아니요 또는 예를 선택할 수 있습니다.
애플리케이션은 사용자가 액세스 권한을 부여한 데이터에 대한 액세스를 유지하고 로그인하여 프로필을 읽을 수 있는 권한을 요청합니다. 이러한 권한에 동의하려면 수락을 선택합니다.
애플리케이션에 로그인했음을 나타내는 다음 스크린샷이 나타납니다.
보호된 API를 호출하고 결과를 표시하려면 다운스트림 API 호출을 선택합니다. Microsoft Graph API를 성공적으로 호출하면 다음과 같이 로그인한 사용자에 대한 정보가 반환됩니다.
앱에서 로그아웃
- 로그아웃을 택하여 앱에서 로그아웃합니다.
- 로그아웃할 계정을 선택하라는 메시지가 표시됩니다. 로그인하는 데 사용한 계정을 선택합니다.
- 로그아웃했다는 메시지가 나타납니다. 이제 브라우저 창을 닫을 수 있습니다.
참고 항목
빌드한 앱은 Python용 MSAL(Microsoft 인증 라이브러리)의 세부 정보를 대부분 추상화하는 ID 라이브러리를 사용합니다. 다양한 시나리오에 MSAL Python을 사용하는 방법에 대한 자세한 내용은 MSAL Python 설명서를 참조하세요.