PublicClientApplication Klasse
Identisch mit der Ausnahme <xref:ClientApplication.__init__>, dass dieser client_credential Parameter beibehalten Nonewird.
Note
Was ist ein Broker, und warum verwenden Sie ihn?
Ein Broker ist eine Komponente, die auf Ihrem Gerät installiert ist.
Der Broker gibt Ihrem Gerät implizit eine Identität. Mithilfe eines Brokers
Ihr Gerät wird zu einem Faktor, der MFA (mehrstufige Authentifizierung) erfüllen kann.
Dieser Faktor würde obligatorisch werden
wenn der Administrator eines Mandanten eine entsprechende Richtlinie für bedingten Zugriff (Conditional Access, CA) aktiviert.
Die Anwesenheit des Brokers ermöglicht Microsoft Identity Platform
um ein höheres Vertrauen zu haben, dass die Token auf Ihrem Gerät ausgestellt werden,
und das ist sicherer.
Ein zusätzlicher Vorteil des Brokers ist,
es wird als langlebiger Prozess mit dem Betriebssystem Ihres Geräts ausgeführt,
und verwaltet ihren eigenen Cache,
so dass Ihre brokerfähigen Apps (sogar eine CLI)
kann automatisch SSO aus einer zuvor eingerichteten angemeldeten Sitzung verwenden.
Wie kann ich mich für die Verwendung des Brokers anmelden?
Sie können eine beliebige Kombination der folgenden Opt-In-Parameter auf "true" festlegen:
Opt-In-Kennzeichnung
Wenn die App ausgeführt wird
Die App hat dies als Umleitungs-URI der Desktopplattform in Azure-Portal
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 mit installierter Unternehmensportal
msauth.com.msauth.unsignedapp://auth
enable_broker_on_linux
Linux mit Installierter Intune
https://login.microsoftonline.com/common/oauth2/nativeclient (MUSS aktiviert sein)
Installieren der Brokerabhängigkeit,
z. B. pip install msal[broker]>=1.33,2<.
Testen sie mit acquire_token_interactive() und acquire_token_silent().
Das Fallbackverhalten der MSAL-Brokerunterstützung von MSAL Python
MSAL führt entweder einen Fehler aus oder führt im Hintergrund zu Nichtbrokerflüssen aus.
MSAL ignoriert die enable_broker_... und Umgehungsbroker
auf diesen Authentifizierungsflüssen, die bekanntermaßen nicht vom Broker unterstützt werden.
Dazu gehören ADFS, B2C usw.
Weitere Szenarien für "could-use-broker" finden Sie unten.
MSAL-Fehler beim Anmelden des App-Entwicklers für die Verwendung des Brokers
aber ein direktes Abhängigkeitspaket "mid-tier" ist nicht installiert.
Fehlermeldung führt app-Entwickler zum Deklarieren der richtigen Abhängigkeit
msal[broker].
Hier ist ein Fehler aufgetreten, da der Fehler für App-Entwickler umsetzbar ist.
MSAL deaktiviert im Hintergrund den Broker und Fallback auf Nichtbroker,
Bei der Auswahl konnte die Abhängigkeit noch nicht initialisiert werden.
Wir gehen davon aus, dass dies auf einem Gerät geschieht, dessen Betriebssystem zu alt ist
oder die zugrunde liegende Brokerkomponente ist irgendwie nicht verfügbar.
Hier gibt es keinen App-Entwickler, oder der Endbenutzer kann dies tun.
Schließlich muss die Richtlinie für bedingten Zugriff
erzwingen, dass der Benutzer zu einem anderen Gerät wechselt.
MSAL-Fehler beim Anmelden des Brokers, installiert, initialisiert,
aber nachfolgende Tokenanforderungen sind fehlgeschlagen.
Konstruktor
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)
Parameter
| Name | Beschreibung |
|---|---|
|
enable_broker_on_windows
Erforderlich
|
<xref:boolean>
Diese Einstellung ist nur wirksam, wenn Ihre App auf Windows 10+ ausgeführt wird. Dieser Parameter ist standardmäßig "None" festgelegt, was bedeutet, dass MSAL keinen Broker verwendet. Neu in MSAL Python 1.25.0. |
|
enable_broker_on_mac
Erforderlich
|
<xref:boolean>
Diese Einstellung ist nur wirksam, wenn Ihre App auf dem Mac ausgeführt wird. Dieser Parameter ist standardmäßig "None" festgelegt, was bedeutet, dass MSAL keinen Broker verwendet. Neu in MSAL Python 1.31.0. |
|
enable_broker_on_linux
Erforderlich
|
<xref:boolean>
Diese Einstellung ist nur wirksam, wenn Ihre App unter Linux ausgeführt wird, einschließlich WSL. Dieser Parameter ist standardmäßig "None" festgelegt, was bedeutet, dass MSAL keinen Broker verwendet. Neu in MSAL Python 1.33.0. |
|
enable_broker_on_wsl
Erforderlich
|
<xref:boolean>
Diese Einstellung ist nur wirksam, wenn Ihre App auf WSL ausgeführt wird. Dieser Parameter ist standardmäßig "None" festgelegt, was bedeutet, dass MSAL keinen Broker verwendet. Neu in MSAL Python 1.33.0. |
|
client_id
Erforderlich
|
|
|
client_credential
|
Standardwert: None
|
Nur Schlüsselwortparameter
| Name | Beschreibung |
|---|---|
|
enable_broker_on_windows
|
Standardwert: None
|
|
enable_broker_on_mac
|
Standardwert: None
|
|
enable_broker_on_linux
|
Standardwert: None
|
|
enable_broker_on_wsl
|
Standardwert: None
|
Methoden
| acquire_token_by_device_flow |
Abrufen eines Tokens durch ein Geräteflussobjekt mit anpassbarem Abrufeffekt. |
| acquire_token_interactive |
Erwerben Sie token interaktiv, d. h. über einen lokalen Browser. Voraussetzung: Konfigurieren Sie in Azure-Portal den Umleitungs-URI Ihrer "Mobilen und Desktopanwendung" als |
| initiate_device_flow |
Initiieren Sie eine Device Flow-Instanz, die in acquire_token_by_device_flow. |
acquire_token_by_device_flow
Abrufen eines Tokens durch ein Geräteflussobjekt mit anpassbarem Abrufeffekt.
acquire_token_by_device_flow(flow, claims_challenge=None, **kwargs)
Parameter
| Name | Beschreibung |
|---|---|
|
flow
Erforderlich
|
Ein zuvor generiertes Diktat von initiate_device_flow. Standardmäßig blockiert der Abrufeffekt dieser Methode den aktuellen Thread. Sie können die Abrufschleife jederzeit abbrechen, indem Sie den Wert des "expires_at"-Schlüssels des Flusses auf 0 ändern. |
|
claims_challenge
|
Der claims_challenge Parameter fordert spezifische Ansprüche an, die vom Ressourcenanbieter in Form einer claims_challenge Direktive im www-authenticate-Header vom UserInfo-Endpunkt und/oder im ID-Token und/oder Zugriffstoken zurückgegeben werden. Es handelt sich um eine Zeichenfolge eines JSON-Objekts, das Listen von Ansprüchen enthält, die von diesen Speicherorten angefordert werden. Standardwert: None
|
Gibt zurück
| Typ | Beschreibung |
|---|---|
|
Ein Diktat, das die JSON-Antwort von Microsoft Entra darstellt:
|
acquire_token_interactive
Erwerben Sie token interaktiv, d. h. über einen lokalen Browser.
Voraussetzung: Konfigurieren Sie in Azure-Portal den Umleitungs-URI Ihrer "Mobilen und Desktopanwendung" als http://localhost.
Wenn Sie sich für die Verwendung des Brokers während der PublicClientApplication Erstellung entscheiden, benötigen Ihre App auch diesen Umleitungs-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)
Parameter
| Name | Beschreibung |
|---|---|
|
scopes
Erforderlich
|
Es handelt sich um eine Liste mit Zeichenfolgen mit Groß-/Kleinschreibung. |
|
prompt
|
Standardmäßig wird kein Eingabeaufforderungswert gesendet, nicht einmal eine Zeichenfolge Standardwert: None
|
|
login_hint
|
Dies ist optional. Bezeichner des Benutzers. Im Allgemeinen ein Benutzerprinzipalname (User Principal Name, UPN). Standardwert: None
|
|
domain_hint
|
Kann einer von "Consumern" oder "Organisationen" oder Ihrer Mandantendomäne "contoso.com" sein. Wenn sie enthalten ist, wird der E-Mail-basierte Ermittlungsprozess übersprungen, den der Benutzer auf der Anmeldeseite durchläuft, was zu einer etwas optimierteren Benutzererfahrung führt. Weitere Informationen zu möglichen Werten, die in Auth Code Flow-Dokument und domain_hint Dokument verfügbar sind. Standardwert: None
|
|
claims_challenge
|
Der claims_challenge Parameter fordert spezifische Ansprüche an, die vom Ressourcenanbieter in Form einer claims_challenge-Direktive im www-authenticate-Header vom UserInfo-Endpunkt und/oder im ID-Token und/oder Zugriffstoken zurückgegeben werden sollen. Es handelt sich um eine Zeichenfolge eines JSON-Objekts, das Listen von Ansprüchen enthält, die von diesen Speicherorten angefordert werden. Standardwert: None
|
|
timeout
|
Diese Methode blockiert den aktuellen Thread.
Dieser Parameter gibt den Timeoutwert in Sekunden an.
Standardwert: None
|
|
port
|
Der Port, der zum Überwachen einer eingehenden Authentifizierungsantwort verwendet werden soll.
Standardmäßig verwenden wir einen vom System zugewiesenen Port.
(Der Rest der redirect_uri ist hartcodiert als Standardwert: None
|
|
extra_scopes_to_consent
|
"Zusätzliche Zustimmungsbereiche" ist ein Konzept, das nur in Microsoft Entra zur Verfügung steht. Es bezieht sich auf andere Ressourcen, für die Sie möglicherweise zur Zustimmung auffordern möchten, in derselben Interaktion, aber für die Sie kein Token für diesen bestimmten Vorgang erhalten. Standardwert: None
|
|
max_age
|
Optional. Maximales Authentifizierungsalter. Gibt die zulässige verstrichene Zeit seit der letzten Authentifizierung des End-User in Sekunden an. Wenn die verstrichene Zeit größer als dieser Wert ist, wird Microsoft Identity Platform den Endbenutzer aktiv erneut authentifizieren. MSAL-Python überprüft auch automatisch den auth_time im ID-Token. Neu in Version 1.15. Standardwert: None
|
|
parent_window_handle
|
Optional.
Die meisten Python Skripts sind Konsolen-Apps. Neu in Version 1.20.0. Standardwert: None
|
|
on_before_launching_ui
|
<xref:function>
Ein Rückruf mit der Form von Neu in Version 1.20.0. Standardwert: None
|
|
auth_scheme
|
Sie können ein Neu in Version 1.26.0. Standardwert: None
|
Gibt zurück
| Typ | Beschreibung |
|---|---|
|
initiate_device_flow
Initiieren Sie eine Device Flow-Instanz, die in acquire_token_by_device_flow.
initiate_device_flow(scopes=None, *, claims_challenge=None, **kwargs)
Parameter
| Name | Beschreibung |
|---|---|
|
scopes
|
Bereiche, die für den Zugriff auf eine geschützte API (eine Ressource) angefordert wurden. Standardwert: None
|
Nur Schlüsselwortparameter
| Name | Beschreibung |
|---|---|
|
claims_challenge
|
Standardwert: None
|
Gibt zurück
| Typ | Beschreibung |
|---|---|
|
Ein Diktat, das ein neu erstelltes Device Flow -Objekt darstellt.
|
Attribute
CONSOLE_WINDOW_HANDLE
CONSOLE_WINDOW_HANDLE = <object object>
DEVICE_FLOW_CORRELATION_ID
DEVICE_FLOW_CORRELATION_ID = '_correlation_id'