PublicClientApplication 클래스

<xref:ClientApplication.__init__>이 매개 변수는 client_credential 그대로 유지None됩니다.

메모

브로커란 무엇이며 왜 사용합니까?

broker는 디바이스에 설치된 구성 요소입니다.

Broker는 암시적으로 디바이스에 ID를 제공합니다. broker를 사용하여

디바이스는 MFA(다단계 인증)를 충족할 수 있는 요소가 됩니다.

이 요소는 필수 요소가 됩니다.

테넌트의 관리자가 해당 CA(조건부 액세스) 정책을 사용하도록 설정하면 입니다.

브로커의 존재는 Microsoft ID 플랫폼 허용합니다.

토큰이 디바이스에 발급되고 있다는 더 높은 신뢰도를 갖기 위해

그리고 그것은 더 안전합니다.

브로커의 추가 이점은 다음과 입니다.

디바이스의 OS를 사용하여 수명이 긴 프로세스로 실행됩니다.

자체 캐시를 유지 관리합니다.

브로커 사용 앱(CLI도 포함)되도록 설정

는 이전에 설정된 로그인 세션에서 SSO를 자동으로 설정할 수 있습니다.

브로커를 사용하도록 옵트인하는 방법

다음 옵트인 매개 변수의 조합을 true로 설정할 수 있습니다.

옵트인 플래그

앱이 실행되는 경우

앱이 Azure Portal 데스크톱 플랫폼 리디렉션 URI로 등록했습니다.

enable_broker_on_windows

Windows 10+

ms-appx-web://Microsoft. AAD. BrokerPlugin/your_client_id

enable_broker_on_wsl

WSL

ms-appx-web://Microsoft. AAD. BrokerPlugin/your_client_id

enable_broker_on_mac

회사 포털 설치된 Mac

msauth.com.msauth.unsignedapp://auth

enable_broker_on_linux

Intune이 설치된 Linux

https://login.microsoftonline.com/common/oauth2/nativeclient (반드시 사용하도록 설정해야 함)

broker 종속성 설치,

예: pip install msal[broker]>=1.33,2<.

acquire_token_interactive() 및 acquire_token_silent()를 사용하여 테스트합니다.

MSAL Python broker 지원의 대체 동작

MSAL은 오류가 발생하거나 비 브로커 흐름으로 자동으로 대체됩니다.

MSAL은 enable_broker_ 무시합니다... 및 바이패스 브로커

broker에서 지원하지 않는 것으로 알려진 인증 흐름에 대해 설명합니다.

여기에는 ADFS, B2C 등이 포함됩니다.

다른 "could-use-broker" 시나리오는 아래를 참조하세요.

앱 개발자가 broker를 사용하도록 옵트인할 때 MSAL 오류 발생

그러나 직접 종속성 "중간 계층" 패키지가 설치되지 않았습니다.

앱 개발자가 올바른 종속성을 선언하도록 안내하는 오류 메시지

msal[broker].

오류가 앱 개발자에게 실행 가능하기 때문에 여기서 오류가 발생합니다.

MSAL은 broker를 자동으로 "비활성화"하고 비 브로커로 대체합니다.

옵트인 시 종속성이 설치되어 있지만 초기화하지 못했습니다.

OS가 너무 오래된 디바이스에서 이 작업이 발생할 것으로 예상합니다.

또는 기본 broker 구성 요소를 사용할 수 없습니다.

앱 개발자나 최종 사용자가 여기서 수행할 수 있는 작업은 많지 않습니다.

결국 조건부 액세스 정책은

사용자가 다른 디바이스로 전환하도록 강제합니다.

broker가 옵트인, 설치, 초기화될 때 MSAL 오류 발생

하지만 후속 토큰 요청이 실패했습니다.

생성자

PublicClientApplication(client_id, client_credential=None, *, enable_broker_on_windows=None, enable_broker_on_mac=None, enable_broker_on_linux=None, enable_broker_on_wsl=None, **kwargs)

매개 변수

Name Description
enable_broker_on_windows
필수
<xref:boolean>

이 설정은 앱이 Windows 10+에서 실행되는 경우에만 적용됩니다. 이 매개 변수는 기본적으로 None으로 설정됩니다. 즉, MSAL은 broker를 사용하지 않습니다.

MSAL Python 1.25.0의 새로운 기능입니다.

enable_broker_on_mac
필수
<xref:boolean>

이 설정은 앱이 Mac에서 실행되는 경우에만 적용됩니다. 이 매개 변수는 기본적으로 None으로 설정됩니다. 즉, MSAL은 broker를 사용하지 않습니다.

MSAL Python 1.31.0의 새로운 기능입니다.

enable_broker_on_linux
필수
<xref:boolean>

이 설정은 앱이 WSL을 포함하여 Linux에서 실행되는 경우에만 적용됩니다. 이 매개 변수는 기본적으로 None으로 설정됩니다. 즉, MSAL은 broker를 사용하지 않습니다.

MSAL Python 1.33.0의 새로운 기능입니다.

enable_broker_on_wsl
필수
<xref:boolean>

이 설정은 앱이 WSL에서 실행되는 경우에만 적용됩니다. 이 매개 변수는 기본적으로 None으로 설정됩니다. 즉, MSAL은 broker를 사용하지 않습니다.

MSAL Python 1.33.0의 새로운 기능입니다.

client_id
필수
client_credential
Default value: None

키워드 전용 매개 변수

Name Description
enable_broker_on_windows
Default value: None
enable_broker_on_mac
Default value: None
enable_broker_on_linux
Default value: None
enable_broker_on_wsl
Default value: None

메서드

acquire_token_by_device_flow

사용자 지정 가능한 폴링 효과를 사용하여 디바이스 흐름 개체로 토큰을 가져옵니다.

acquire_token_interactive

로컬 브라우저를 통해 대화형으로 토큰을 획득합니다.

필수 구성 요소: Azure Portal "모바일 및 데스크톱 애플리케이션"의 리디렉션 URI를 구성http://localhost합니다. 만드는 동안 PublicClientApplication broker를 사용하도록 옵트인하는 경우 앱에도 다음 리디렉션 URI가 필요합니다. ms-appx-web://Microsoft.AAD.BrokerPlugin/YOUR_CLIENT_ID

initiate_device_flow

에서 사용할 디바이스 흐름 인스턴스를 시작합니다 acquire_token_by_device_flow.

acquire_token_by_device_flow

사용자 지정 가능한 폴링 효과를 사용하여 디바이스 흐름 개체로 토큰을 가져옵니다.

acquire_token_by_device_flow(flow, claims_challenge=None, **kwargs)

매개 변수

Name Description
flow
필수

에 의해 initiate_device_flow이전에 생성된 받아쓰기입니다. 기본적으로 이 메서드의 폴링 효과는 현재 스레드를 차단합니다. 흐름의 "expires_at" 키 값을 0으로 변경하여 언제든지 폴링 루프를 중단할 수 있습니다.

claims_challenge

claims_challenge 매개 변수는 userInfo 엔드포인트 및/또는 ID 토큰 및/또는 액세스 토큰에서 반환될 www-authenticate 헤더의 claims_challenge 지시문 형식으로 리소스 공급자가 요청한 특정 클레임을 요청합니다. 이러한 위치에서 요청되는 클레임 목록을 포함하는 JSON 개체의 문자열입니다.

Default value: None

반품

형식 Description

Microsoft Entra json 응답을 나타내는 받아쓰기입니다.

  • 성공적인 응답에는 "access_token" 키가 포함됩니다.

  • 오류 응답에는 "error"와 일반적으로 "error_description"가 포함됩니다.

acquire_token_interactive

로컬 브라우저를 통해 대화형으로 토큰을 획득합니다.

필수 구성 요소: Azure Portal "모바일 및 데스크톱 애플리케이션"의 리디렉션 URI를 구성http://localhost합니다. 만드는 동안 PublicClientApplication broker를 사용하도록 옵트인하는 경우 앱에도 다음 리디렉션 URI가 필요합니다. ms-appx-web://Microsoft.AAD.BrokerPlugin/YOUR_CLIENT_ID

acquire_token_interactive(scopes, prompt=None, login_hint=None, domain_hint=None, claims_challenge=None, timeout=None, port=None, extra_scopes_to_consent=None, max_age=None, parent_window_handle=None, on_before_launching_ui=None, auth_scheme=None, **kwargs)

매개 변수

Name Description
scopes
필수

대/소문자를 구분하는 문자열 목록입니다.

prompt
str

기본적으로 프롬프트 값은 전송되지 않으며 문자열 "none"도 전송되지 않습니다. 값을 명시적으로 지정해야 합니다. 유효한 값은 에 정의된 상수입니다 <xref:msal.Prompt>.

Default value: None
login_hint
str

Optional. 사용자의 식별자입니다. 일반적으로 UPN(사용자 계정 이름)입니다.

Default value: None
domain_hint

"소비자" 또는 "조직" 또는 테넌트 도메인 "contoso.com" 중 하나일 수 있습니다. 포함된 경우 사용자가 로그인 페이지에서 진행하는 이메일 기반 검색 프로세스를 건너뛰어 사용자 환경이 약간 더 간소화됩니다. 인증 코드 흐름 문서domain_hint 문서에서 사용할 수 있는 가능한 값에 대한 자세한 정보입니다.

Default value: None
claims_challenge

claims_challenge 매개 변수는 userInfo 엔드포인트 및/또는 ID 토큰 및/또는 액세스 토큰에서 반환될 www-authenticate 헤더의 claims_challenge 지시문 형식으로 리소스 공급자가 요청한 특정 클레임을 요청합니다. 이러한 위치에서 요청되는 클레임 목록을 포함하는 JSON 개체의 문자열입니다.

Default value: None
timeout
int

이 메서드는 현재 스레드를 차단합니다. 이 매개 변수는 시간 제한 값을 초 단위로 지정합니다. 기본값 None 은 무기한 대기를 의미합니다.

Default value: None
port
int

들어오는 인증 응답을 수신 대기하는 데 사용할 포트입니다. 기본적으로 시스템 할당 포트를 사용합니다. (나머지 redirect_uri .로 http://localhost하드 코딩됩니다.

Default value: None
extra_scopes_to_consent

"동의할 추가 범위"는 Microsoft Entra만 사용할 수 있는 개념입니다. 동일한 상호 작용에서 동의하라는 메시지를 표시할 수 있지만 이 특정 작업에 대한 토큰을 다시 가져오지 않는 다른 리소스를 참조합니다.

Default value: None
max_age
int

선택 사항입니다. 최대 인증 기간입니다. End-User 마지막으로 인증된 이후 허용되는 경과 시간(초)을 지정합니다. 경과된 시간이 이 값보다 크면 Microsoft ID 플랫폼 최종 사용자를 적극적으로 다시 인증합니다.

MSAL Python ID 토큰의 auth_time 자동으로 유효성을 검사합니다.

버전 1.15의 새로운 기능

Default value: None
parent_window_handle
int

선택 사항입니다.

  • 앱이 broker를 사용하도록 옵트인하지 않는 경우 여기에 제공할 parent_window_handle 필요가 없습니다.

  • 앱이 broker parent_window_handle 를 사용하도록 선택하는 경우 필수입니다.

    • 앱이 Windows 또는 Mac 시스템에서 실행되는 GUI 앱인 경우 로그인 창이 창 위에 팝업되도록 창 핸들도 제공해야 합니다.

    • 앱이 Windows 또는 Mac 시스템에서 실행되는 콘솔 앱인 경우 자리 표시자를 PublicClientApplication.CONSOLE_WINDOW_HANDLE사용할 수 있습니다.

대부분의 Python 스크립트는 콘솔 앱입니다.

버전 1.20.0의 새로운 기능

Default value: None
on_before_launching_ui
<xref:function>

형식이 lambda ui="xyz", **kwargs: print("A {} will be launched".format(ui))"browser" 또는 "broker"인 ui 콜백입니다. 이를 사용하여 최종 사용자에게 팝업 창을 예상하도록 알릴 수 있습니다.

버전 1.20.0의 새로운 기능

Default value: None
auth_scheme

MSAL이 msal.auth_scheme.PopAuthScheme POP(소유 증명) 토큰을 가져올 수 있도록 개체를 제공할 수 있습니다.

버전 1.26.0의 새로운 기능

Default value: None

반품

형식 Description
  • "오류" 키가 없고 일반적으로 "access_token" 키를 포함하는 받아쓰기입니다.

  • 토큰 새로 고침에 실패한 경우 "오류" 키가 포함된 받아쓰기입니다.

initiate_device_flow

에서 사용할 디바이스 흐름 인스턴스를 시작합니다 acquire_token_by_device_flow.

initiate_device_flow(scopes=None, *, claims_challenge=None, **kwargs)

매개 변수

Name Description
scopes

보호된 API(리소스)에 액세스하도록 요청된 범위입니다.

Default value: None

키워드 전용 매개 변수

Name Description
claims_challenge
Default value: None

반품

형식 Description

새로 만든 Device Flow 개체를 나타내는 받아쓰기입니다.

  • 성공적인 응답에는 "user_code" 키가 포함됩니다.

  • 오류 응답에는 읽을 수 있는 다른 키/값 쌍이 포함됩니다.

특성

CONSOLE_WINDOW_HANDLE

CONSOLE_WINDOW_HANDLE = <object object>

DEVICE_FLOW_CORRELATION_ID

DEVICE_FLOW_CORRELATION_ID = '_correlation_id'