웹 계정 관리자에서 MSAL Python 사용

Windows 애플리케이션을 빌드하는 경우 인증 브로커의 도움을 받아 사용자가 인증하는 방법을 간소화하는 것이 좋습니다. WAM(웹 계정 관리자)은 MSAL Python 작동하는 인증 브로커입니다. WAM은 Windows 10 이상뿐만 아니라 Windows Server 2019 이상에서만 사용할 수 있습니다.

인증 브로커 사용의 이점에 대한 자세한 내용은 MSAL.NET 설명서의 브로커란?을 참조하세요.

사용량

broker를 사용하려면 PyPI의 핵심 MSAL 외에도 broker 관련 패키지를 설치해야 합니다.

pip install msal[broker]>=1.20,<2

broker 관련 패키지가 설치되지 않고 인증 브로커를 사용하려고 하면 ImportError 오류가 발생합니다. 종속성을 설치해야 합니다. pip install "msal[broker]>=1.20,2<".

다음으로, 새 PublicClientApplication를 인스턴스화하고 enable_broker_on_windowsTrue로 설정합니다. 이렇게 하면 MSAL이 새 브라우저 창을 표시하는 대신 WAM과 통신합니다. 플랫폼 간 애플리케이션을 작성하는 경우 enable_broker_on_mac 문서에 설명된 대로 사용해야 합니다.

from msal import PublicClientApplication

app = PublicClientApplication(
    "CLIENT_ID",
    authority="https://login.microsoftonline.com/common",
    enable_broker_on_windows=True)

이제 acquire_token_interactive 통해 부모 창 핸들을 호출 하고 지정하여 토큰을 획득할 수 있습니다.

result = app.acquire_token_interactive(["User.ReadBasic.All"],
         parent_window_handle=app.CONSOLE_WINDOW_HANDLE)

요청 창 위에 대화 상자가 올바르게 표시되도록 하려면 WAM에서 부모 창 핸들이 필요합니다. MSAL은 WAM이 바인딩해야 하는 창에 영향을 줄 수 있는 변수가 많기 때문에 이를 직접 유추하지 않으며, 애플리케이션을 빌드하는 개발자가 필요한 창을 결정하는 데 가장 적합합니다.

콘솔 애플리케이션의 경우 MSAL은 터미널 CONSOLE_WINDOW_HANDLE에 대한 창 핸들을 가져오는 기본 솔루션을 제공하여 쉽게 수행할 수 있습니다. 데스크톱 애플리케이션의 경우 창 핸들을 가져오려면 Windows API에 대한 추가 작업이 필요할 수 있습니다. pywin32와 같은 도우미 패키지는 API 호출에 도움이 될 수 있습니다.

애플리케이션을 실행하기 전에 데스크톱 앱에 대한 리디렉션 URL을 구성해야 합니다.

Windows broker를 사용하려면 애플리케이션에 Azure Portal 구성된 올바른 리디렉션 URL이 다음과 같은 모양이어야 합니다.

ms-appx-web://microsoft.aad.brokerplugin/YOUR_CLIENT_ID

리디렉션 URL이 구성되지 않은 경우 (pii)와 유사한 broker_error 받게 됩니다. 상태: Response_Status.Status_ApiContractViolation, 오류 코드: 3399614473, 태그: 557973642.

구성 및 인스턴스화가 올바른 경우 애플리케이션을 실행하면 인증 브로커가 시작되고 사용자가 인증할 계정을 선택할 수 있도록 허용해야 합니다.

Python 호출되는 WAM의 예

브로커 기반 인증을 사용하도록 전환하는 경우 사용자가 이전에 로그인하고 로그인 상태가 여전히 유효한 경우 호출 acquire_token_interactive 은 여전히 토큰 획득을 자동으로 시도하고 필요한 경우에만 프롬프트가 발생합니다. 항상 프롬프트를 사용하려면 이 선택적 매개 변수 prompt="select_account"를 사용할 수 있습니다.

Broker 환경 차이

인스턴스화 PublicClientApplication할 때 지정된 권한에 따라 broker 사용자 인터페이스가 다를 수 있습니다.

/소비자

개인 Microsoft 계정으로 인증하는 데 사용됩니다.

소비자용 WAM UI

/일반적인

회사 및 학교 계정뿐만 아니라 개인 Microsoft 계정으로 인증하는 데 사용됩니다.

개인 및 회사 계정에 대한 WAM UI

/조직

회사 및 학교 계정으로 인증하는 데 사용됩니다.

회사 계정 전용 WAM UI

login_hint 제공되지만 계정이 WAM에 아직 등록되지 않은 경우 힌트가 전자 메일 또는 전화 필드에 자동으로 채워집니다.

/TENANT_ID

지정된 테넌트 내에서 회사 및 학교 계정 으로만 인증하는 데 사용됩니다.

테넌트별 계정에 대한 WAM UI

login_hint 제공되지만 계정이 WAM에 아직 등록되지 않은 경우 힌트가 전자 메일 또는 전화 필드에 자동으로 채워집니다.