다음을 통해 공유


빠른 시작: Python Flask 웹앱에서 사용자 로그인 및 Microsoft Graph 호출

이 빠른 시작에서는 사용자를 인증하고 Microsoft Graph API를 호출하는 방법을 보여 주는 Python Flask 웹앱 샘플을 다운로드하여 실행합니다. Microsoft Entra 조직의 사용자는 애플리케이션에 로그인할 수 있습니다.

필수 조건

1단계: 애플리케이션 등록

이 문서의 단계는 시작하는 포털에 따라 조금씩 다를 수 있습니다.

Microsoft Entra 관리 센터에 애플리케이션을 등록하려면 다음 단계를 따릅니다.

  1. 최소한 클라우드 애플리케이션 관리자Microsoft Entra 관리 센터에 로그인합니다.
  2. 여러 테넌트에 액세스할 수 있는 경우 위쪽 메뉴의 설정 아이콘을 사용하여 디렉터리 + 구독 메뉴에서 애플리케이션을 등록하려는 테넌트로 전환합니다.
  3. ID>애플리케이션>앱 등록으로 이동하고 신규 등록을 선택합니다.
  4. 애플리케이션의 이름을 입력합니다(예: python-webapp).
  5. 지원되는 계정 유형에서 이 조직 디렉터리의 계정만을 선택합니다.
  6. 리디렉션 URI에서 플랫폼에 대한 을 선택합니다.
  7. http://localhost:5000/getAToken의 리디렉션 URI를 입력합니다. 나중에 이 값을 변경할 수 있습니다.
  8. 등록을 선택합니다.

2단계: 클라이언트 암호 추가

샘플 앱은 클라이언트 비밀을 사용하여 토큰을 요청할 때 해당 ID를 증명합니다. 다음 단계에 따라 Python 웹앱에 대한 클라이언트 비밀을 만듭니다.

  1. 나중에 사용할 수 있도록 앱 개요 페이지에서 애플리케이션(클라이언트) ID 값을 기록해 둡니다.
  2. 관리에서 인증서 및 비밀을 선택하고 클라이언트 암호 섹션에서 새 클라이언트 암호를 선택합니다.
  3. 클라이언트 암호에 대한 설명을 입력하고 기본 만료를 그대로 두고 추가를 선택합니다.
  4. 클라이언트 암호을 안전한 위치에 저장합니다. 이 값은 코드를 구성하는 데 필요하며 나중에 가져올 수 없습니다.

기밀 클라이언트 애플리케이션에 대한 자격 증명을 만들 때 Microsoft는 애플리케이션을 프로덕션 환경으로 이동하기 전에 클라이언트 암호 대신 인증서를 사용할 것을 권장합니다. 인증서를 사용하는 방법에 대한 자세한 내용은 다음 지침을 참조하세요.

3단계 - 범위 추가

이 앱은 사용자를 로그인시키므로 위임된 권한을 추가해야 합니다.

  1. 관리에서 API 권한>권한 추가를 선택합니다.
  2. Microsoft API 탭이 선택되어 있는지 확인합니다.
  3. 일반적으로 사용되는 Microsoft API 섹션에서 Microsoft Graph를 선택합니다.
  4. 위임된 권한 섹션에서 User.Read가 선택되었는지 확인합니다. 필요한 경우 검색 상자를 사용합니다.
  5. 권한 추가를 선택합니다.

4단계 - 샘플 앱 다운로드

Python 코드 샘플을 다운로드하거나 리포지토리를 복제합니다.

git clone https://github.com/Azure-Samples/ms-identity-docs-code-python/

5단계: 샘플 웹앱 구성

  1. IDE에서 다운로드한 애플리케이션을 열고 샘플 앱의 루트 폴더로 이동합니다.

    cd flask-web-app
    
  2. .env.sample을 가이드로 사용하여 프로젝트의 루트 폴더에 .env 파일을 만듭니다.

    # The following variables are required for the app to run.
    CLIENT_ID=<Enter_your_client_id>
    CLIENT_SECRET=<Enter_your_client_secret>
    AUTHORITY=<Enter_your_authority_url>
    
    • CLIENT_ID의 값을 개요 페이지에서 사용할 수 있는 등록된 애플리케이션의 애플리케이션(클라이언트) ID로 설정합니다.
    • CLIENT_SECRET의 값을 등록된 애플리케이션의 인증서 및 비밀에서 만든 클라이언트 암호로 설정합니다.
    • AUTHORITY의 값을 https://login.microsoftonline.com/<TENANT_GUID>(으)로 설정합니다. 디렉터리(테넌트) ID는 앱 등록 개요 페이지에서 확인할 수 있습니다.

    환경 변수는 app_config.py에서 참조되며 소스 제어에서 제외되도록 별도의 .env 파일에 보관됩니다. 제공된 .gitignore 파일은 .env 파일이 체크 인되는 것을 방지합니다.

6단계: 샘플 앱 실행

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

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

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

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

  5. 단계에 따라 Microsoft 계정에 로그인하는 데 필요한 세부 정보를 입력합니다. 로그인을 위해 이메일 주소와 암호를 입력하라는 메시지가 표시됩니다.

  6. 애플리케이션은 보여진 것처럼 사용자가 액세스 권한을 부여한 데이터에 대한 액세스 권한을 유지하고 로그인하여 프로필을 읽을 수 있는 권한을 요청합니다. 수락을 선택합니다.

필요한 권한에 대한 액세스 동의를 요청하는 샘플 앱을 보여주는 다이어그램.

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

샘플 앱이 사용자 로그인을 성공적으로 수행한 방법을 보여주는 다이어그램.

작동 방식

다음 다이어그램은 샘플 앱의 작동 방식을 보여 줍니다.

이 빠른 시작에서 생성된 샘플 앱의 작동 방식을 보여 주는 다이어그램

  1. 애플리케이션은 identity 패키지를 사용하여 Microsoft ID 플랫폼에서 액세스 토큰을 가져옵니다. 이 패키지는 웹앱에서 인증 및 권한 부여를 간소화하기 위해 Python용 MSAL(Microsoft 인증 라이브러리)을 기반으로 빌드됩니다.

  2. 이전 단계에서 가져온 액세스 토큰은 Microsoft Graph API를 호출할 때 사용자를 인증하는 전달자 토큰으로 사용됩니다.

다음 단계

다음 여러 파트로 구성된 자습서 시리즈에서 사용자를 로그인시키고 보호된 웹 API를 호출하는 Python 웹 앱을 구축하여 자세히 알아보세요.