Share via


자습서: 보호된 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)

사용자가 URL 경로로 이동 /call_downstream_api 하면 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 저장되고 렌더링을 위해 템플릿에 display.html 전달된 JSON 응답을 반환합니다.

앱을 실행하는 코드 추가

앱을 실행하려면 app.py 파일 끝에 다음 코드 조각을 추가합니다.

if __name__ == "__main__":
    app.run()

앱 테스트

다음 단계에 따라 웹앱에서 로그인, API 호출 및 로그아웃 환경을 테스트합니다.

  1. 아직 없는 경우 .env.sample 파일의 자리 표시자 값을 Microsoft Entra 앱 등록 세부 정보(클라이언트 ID, 클라이언트 암호 및 기관 URL)로 바꿉니다.

  2. 앱에 대한 가상 환경을 만듭니다.

    py -m venv .venv
    .venv\scripts\activate
    
  3. pip를 사용하여 요구 사항을 설치합니다.

    pip install -r requirements.txt
    
  4. 명령줄에서 앱을 실행합니다. 앱이 이전에 구성한 리디렉션 URI와 동일한 포트에서 실행되고 있는지 확인합니다.

    flask run --host=localhost --port=5000
    
  5. 터미널에 표시되는 https URL(예: https://localhost:5000)을 복사하여 브라우저에 붙여넣습니다. 프라이빗 또는 Incognito 브라우저 세션을 사용하는 것이 좋습니다.

  6. 로그인 창이 나타나면 로그인할 계정을 제공하고 다음을 선택합니다.

    로그인 화면을 보여 주는 스크린샷.

  7. 브라우저에서 계정에 대한 암호를 제공하도록 리디렉션됩니다. 암호를 입력하고 로그인을 선택합니다.

    이 시점에서 로그인 흐름은 인증자 앱을 사용하는 다단계 인증과 같이 조직에 필요한 보안 정보에 따라 달라질 수 있습니다.

  8. 로그인 상태 유지에서 아니요 또는 를 선택할 수 있습니다.

  9. 애플리케이션은 액세스 권한을 부여한 데이터에 기본 액세스 권한을 획득하고, 로그인하고, 프로필을 읽을 수 있는 권한을 요청합니다. 동의를 선택하여 이러한 권한에 동의합니다.

  10. 애플리케이션에 로그인했음을 나타내는 다음 스크린샷이 나타납니다.

    로그인한 사용자를 보여 주는 스크린샷

  11. 보호된 API를 호출하고 결과를 표시하려면 다운스트림 API 호출을 선택합니다. Microsoft Graph API를 성공적으로 호출하면 다음과 같이 로그인한 사용자에 대한 정보가 반환됩니다.

    성공적인 API 호출 결과를 보여 주는 스크린샷

앱에서 로그아웃

  1. 로그아웃을 선택하여 앱에서 로그아웃합니다.
  2. 로그아웃할 계정을 선택하라는 메시지가 표시됩니다. 로그인하는 데 사용한 계정을 선택합니다.
  3. 로그아웃했음을 나타내는 메시지가 나타납니다. 이제 브라우저 창을 닫을 수 있습니다.

참고 항목

빌드한 앱은 Python용 MSAL(Microsoft 인증 라이브러리)의 대부분의 세부 정보를 추상화하는 ID 라이브러리를 사용합니다. 다양한 시나리오에 MSAL Python을 사용하는 방법에 대한 자세한 내용은 MSAL Python 설명서를 참조 하세요.