빠른 시작: Python Flask 웹앱에서 사용자 로그인 및 Microsoft Graph 호출
이 빠른 시작에서는 사용자를 인증하고 Microsoft Graph API를 호출하는 방법을 보여 주는 Python Flask 웹앱 샘플을 다운로드하여 실행합니다. Microsoft Entra 조직의 사용자는 애플리케이션에 로그인할 수 있습니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- Microsoft Entra 테넌트. 자세한 내용은 Microsoft Entra 테넌트를 가져오는 방법을 참조 하세요.
- Python 3+
1단계: 애플리케이션 등록
팁
이 문서의 단계는 시작하는 포털에 따라 약간 다를 수 있습니다.
Microsoft Entra 관리 센터에 애플리케이션을 등록하려면 다음 단계를 따릅니다.
- 최소한 클라우드 애플리케이션 관리자로 Microsoft Entra 관리 센터에 로그인합니다.
- 여러 테넌트에 액세스할 수 있는 경우 위쪽 메뉴의 설정 아이콘을 사용하여 디렉터리 + 구독 메뉴에서 애플리케이션을 등록하려는 테넌트로 전환합니다.
- ID>애플리케이션>앱 등록으로 이동하고 신규 등록을 선택합니다.
- 애플리케이션의 이름을 입력합니다(예: python-webapp).
- 지원되는 계정 유형에서 이 조직 디렉터리의 계정만을 선택합니다.
- 리디렉션 URI에서 플랫폼에 대한 웹을 선택합니다.
http://localhost:5000/getAToken
의 리디렉션 URI를 입력합니다. 나중에 이 값을 변경할 수 있습니다.- 등록을 선택합니다.
2단계: 클라이언트 암호 추가
샘플 앱은 클라이언트 비밀을 사용하여 토큰을 요청할 때 해당 ID를 증명합니다. 다음 단계에 따라 Python 웹앱에 대한 클라이언트 비밀을 만듭니다.
- 나중에 사용할 수 있도록 앱 개요 페이지에서 애플리케이션(클라이언트) ID 값을 기록해 둡니다.
- 관리에서 인증서 및 비밀을 선택하고 클라이언트 암호 섹션에서 새 클라이언트 암호를 선택합니다.
- 클라이언트 암호에 대한 설명을 입력하고 기본 만료를 그대로 두고 추가를 선택합니다.
- 클라이언트 암호의 값을 안전한 위치에 저장합니다. 이 값은 코드를 구성해야 하며 나중에 검색할 수 없습니다.
기밀 클라이언트 애플리케이션에 대한 자격 증명을 만들 때 애플리케이션을 프로덕션 환경으로 이동하기 전에 클라이언트 암호 대신 인증서를 사용하는 것이 좋습니다. 인증서를 사용하는 방법에 대한 자세한 내용은 다음 지침을 참조하세요.
3단계 - 범위 추가
이 앱은 사용자를 로그인하므로 위임된 권한을 추가해야 합니다.
- 관리에서 API 권한>권한 추가를 선택합니다.
- Microsoft API 탭이 선택되어 있는지 확인합니다.
- 일반적으로 사용되는 Microsoft API 섹션에서 Microsoft Graph를 선택합니다.
- 위임된 권한 섹션에서 User.Read가 선택되어 있는지 확인합니다. 필요한 경우 검색 상자를 사용합니다.
- 권한 추가를 선택합니다.
4단계 - 샘플 앱 다운로드
Python 코드 샘플을 다운로드하거나 리포지토리를 복제합니다.
git clone https://github.com/Azure-Samples/ms-identity-docs-code-python/
5단계: 샘플 웹앱 구성
IDE에서 다운로드한 애플리케이션을 열고 샘플 앱의 루트 폴더로 이동합니다.
cd flask-web-app
.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단계: 샘플 앱 실행
앱에 대한 가상 환경을 만듭니다.
py -m venv .venv .venv\scripts\activate
pip
를 사용하여 요구 사항을 설치합니다.pip install -r requirements.txt
명령줄에서 앱을 실행합니다. 앱이 이전에 구성한 리디렉션 URI와 동일한 포트에서 실행되고 있는지 확인합니다.
flask run --debug --host=localhost --port=5000
터미널에 표시되는 https URL(예: https://localhost:5000)을 복사하여 브라우저에 붙여넣습니다. 프라이빗 또는 Incognito 브라우저 세션을 사용하는 것이 좋습니다.
단계에 따라 Microsoft 계정에 로그인하는 데 필요한 세부 정보를 입력합니다. 로그인할 전자 메일 주소와 암호를 입력하라는 요청이 있습니다.
애플리케이션은 기본 액세스 권한을 부여한 데이터에 대한 액세스를 확인하고, 표시된 대로 로그인하고 프로필을 읽을 수 있는 권한을 요청합니다. 수락을 선택합니다.
- 애플리케이션에 성공적으로 로그인했음을 나타내는 다음 스크린샷이 나타납니다.
작동 방식
다음 다이어그램은 샘플 앱의 작동 방식을 보여 줍니다.
애플리케이션은
identity
패키지를 사용하여 Microsoft ID 플랫폼에서 액세스 토큰을 가져옵니다. 이 패키지는 웹앱에서 인증 및 권한 부여를 간소화하기 위해 Python용 MSAL(Microsoft 인증 라이브러리)을 기반으로 빌드됩니다.이전 단계에서 가져온 액세스 토큰은 Microsoft Graph API를 호출할 때 사용자를 인증하는 전달자 토큰으로 사용됩니다.
다음 단계
다음 다중 파트 자습서 시리즈에서 사용자를 로그인하고 보호된 웹 API를 호출하는 Python 웹앱을 빌드하여 자세히 알아보세요.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기