ClientApplication Klasse

In der Regel verwenden Sie diese Klasse nicht direkt. Verwenden Sie stattdessen die Unterklassen: PublicClientApplication und ConfidentialClientApplication.

Erstellen Sie eine Anwendungsinstanz.

Konstruktor

ClientApplication(client_id, client_credential=None, authority=None, validate_authority=True, token_cache=None, http_client=None, verify=True, proxies=None, timeout=None, client_claims=None, app_name=None, app_version=None, client_capabilities=None, azure_region=None, exclude_scopes=None, http_cache=None, instance_discovery=None, allow_broker=None, enable_pii_log=None, oidc_authority=None)

Parameter

Name Beschreibung
client_id
Erforderlich
str

Ihre App verfügt über eine client_id, nachdem Sie sie bei Microsoft Entra Admin Center registriert haben.

client_credential

Verwenden PublicClientApplicationSie hier "Keine" .

For ConfidentialClientApplication, it supports many different input formats for different scenarios.

Unterstützung mithilfe eines geheimen Clientschlüssels. Nur Feed in einer Zeichenfolge, z "your client secret". B. .

Unterstützung für die Verwendung eines Zertifikats im X.509(PEM)-FormatDeprecated, da es SHA-1-Fingerabdruck verwendet,

es sei denn, Sie verwenden weiterhin ADFS, die nur SHA-1-Fingerabdruck unterstützt. Verwenden Sie die pfx-Option, die weiter unten auf dieser Seite dokumentiert ist. Feed in einem Diktat in diesem Formular:


   {
       "private_key": "...-----BEGIN PRIVATE KEY-----... in PEM format",
       "thumbprint": "An SHA-1 thumbprint such as A1B2C3D4E5F6..."
           "Changed in version 1.35.0, if thumbprint is absent"
           "and a public_certificate is present, MSAL will"
           "automatically calculate an SHA-256 thumbprint instead.",
       "passphrase": "Needed if the private_key is encrypted (Added in version 1.6.0)",
       "public_certificate": "...-----BEGIN CERTIFICATE-----...",  # Needed if you use Subject Name/Issuer auth. Added in version 0.5.0.
   }

MSAL-Python erfordert ein "private_key" im PEM-Format. Wenn Ihr Zertifikat im PKCS12(PFX)-Format vorliegt, können Sie es in das X.509-Format (PEM) konvertieren, nach openssl pkcs12 -in file.pfx -out file.pem -nodes. Der Fingerabdruck ist in der Registrierung Ihrer App in Azure-Portal verfügbar. Alternativ können Sie den Fingerabdruck berechnen. public_certificate (optional) ist ein Öffentliches Schlüsselzertifikat, das über den JWT-Header "x5c" gesendet wird. Dies ist nützlich, wenn Sie die Antragstellername-/Ausstellerauthentifizierung verwenden, die ein Ansatz ist, um eine einfachere Zertifikatdrehung zu ermöglichen. Pro Spezifikationen: "Das Zertifikat, das den öffentlichen Schlüssel enthält, der dem Schlüssel entspricht, der zum digitalen Signieren des JWS verwendet wird, muss das erste Zertifikat sein. Dies kann durch zusätzliche Zertifikate gefolgt werden, wobei jedes nachfolgende Zertifikat der zum Zertifizieren des vorherigen Zertifikats verwendet wird." Der Aussteller Ihres Zertifikats kann jedoch eine andere Reihenfolge verwenden. Wenn ihr Versuch also mit einem Fehler AADSTS700027 endet : "Der angegebene Signaturwert entspricht nicht dem erwarteten Signaturwert", können Sie stattdessen nur das Blattzertifikat (im PEM/str-Format) verwenden.

Unterstützung der rohen Assertion, die von einer anderen Stelle abgerufen wurde, die in Version 1.13.0 hinzugefügt wurde:

Es kann auch eine vollständig vorsignierte Assertion sein, die Sie selbst zusammengestellt haben. Übergeben Sie einfach einen Container, der nur den Schlüssel "client_assertion" enthält, wie folgt:


   {
       "client_assertion": "...a JWT with claims aud, exp, iss, jti, nbf, and sub..."
   }

Unterstützen des Lesens von Clientzertifikaten aus PFX-DateienDiese Verwendung verwendet automatisch SHA-256-Fingerabdruck des Zertifikats. Hinzugefügt in Version 1.29.0:

Feed in ein Wörterbuch, das den Pfad zu einer PFX-Datei enthält:


   {
       "private_key_pfx_path": "/path/to/your.pfx",  # Added in version 1.29.0
       "public_certificate": True,  # Only needed if you use Subject Name/Issuer auth. Added in version 1.30.0
       "passphrase": "Passphrase if the private_key is encrypted (Optional)",
   }

Mit dem folgenden Befehl wird eine PFX-Datei aus Ihrer .key- und PEM-Datei generiert:


   openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.pem

Antragstellername/Ausstellerauthentifizierung ist ein Ansatz, um eine einfachere Zertifikatdrehung zu ermöglichen. Wenn Ihre PFX-Datei sowohl den privaten Schlüssel als auch das öffentliche Zertifikat enthält, können Sie sich für die Authentifizierung des Antragstellernamens/Ausstellers anmelden, indem Sie "public_certificate" festlegen.True

Standardwert: None
client_claims

In Version 0.5.0 hinzugefügt: Es handelt sich um ein Wörterbuch mit zusätzlichen Ansprüchen, die von diesem ConfidentialClientApplication privaten Schlüssel signiert werden. Sie können beispielsweise {"client_ip" verwenden: "x.x.x.x.x"}. Sie können auch einen der folgenden Standardansprüche außer Kraft setzen:


   {
       "aud": the_token_endpoint,
       "iss": self.client_id,
       "sub": same_as_issuer,
       "exp": now + 10_min,
       "iat": now,
       "jti": a_random_uuid
   }
Standardwert: None
authority
str

Eine URL, die eine Tokenautorität identifiziert. Dies sollte das Format sein. https://login.microsoftonline.com/your_tenant Standardmäßig verwenden wir https://login.microsoftonline.com/common

Geändert in Version 1.17: Sie können auch vordefinierte Konstanten und einen Generator wie folgt verwenden:


   from msal.authority import (
       AuthorityBuilder,
       AZURE_US_GOVERNMENT, AZURE_CHINA, AZURE_PUBLIC)
   my_authority = AuthorityBuilder(AZURE_PUBLIC, "contoso.onmicrosoft.com")
   # Now you get an equivalent of
   # "https://login.microsoftonline.com/contoso.onmicrosoft.com"

   # You can feed such an authority to msal's ClientApplication
   from msal import PublicClientApplication
   app = PublicClientApplication("my_client_id", authority=my_authority, ...)
Standardwert: None
validate_authority

(optional) Aktiviert oder deaktiviert die Autoritätsüberprüfung. Dieser Parameter ist standardmäßig auf "true" festgelegt.

Standardwert: True
token_cache

Legt den tokencache fest, der von dieser ClientApplication-Instanz verwendet wird. Standardmäßig wird ein Speichercache erstellt und verwendet.

Standardwert: None
http_client

(optional) Ihre Implementierung der abstrakten Klasse HttpClient <msal.oauth2cli.http.http_client> Standard für eine Anforderungssitzungsinstanz. Da MSAL 1.11.0, wurde die Standardsitzung so konfiguriert, dass versucht wird, einen Wiederholungsfehler zu versuchen. Wenn Sie Ihre eigene http_client bereitstellen, müssen http_client Sie entscheiden, ob sie erneut versuchen möchten.

Standardwert: None
verify

(optional) Er wird an den Verify-Parameter in der zugrunde liegenden Anforderungsbibliothek übergeben. Dies gilt nicht, wenn Sie sich entschieden haben, Ihren eigenen HTTP-Client zu übergeben.

Standardwert: True
proxies

(optional) Sie wird an den Proxyparameter in der zugrunde liegenden Anforderungsbibliothek übergeben. Dies gilt nicht, wenn Sie sich entschieden haben, Ihren eigenen HTTP-Client zu übergeben.

Standardwert: None
timeout

(optional) Sie wird an den Timeout-Parameter in der zugrunde liegenden Anforderungsbibliothek übergeben. Dies gilt nicht, wenn Sie sich entschieden haben, Ihren eigenen HTTP-Client zu übergeben.

Standardwert: None
app_name

(optional) Sie können Ihren Anwendungsnamen für Microsoft Telemetriezwecke angeben. Der Standardwert ist "None", bedeutet, dass er nicht an Microsoft übergeben wird.

Standardwert: None
app_version

(optional) Sie können Ihre Anwendungsversion für Microsoft Telemetriezwecke bereitstellen. Der Standardwert ist "None", bedeutet, dass er nicht an Microsoft übergeben wird.

Standardwert: None
client_capabilities

(optional) Ermöglicht die Konfiguration einer oder mehrerer Clientfunktionen, z. B. ["CP1"].

Die Clientfunktion soll den Microsoft Identity Platform (STS) darüber informieren, wofür dieser Client geeignet ist, damit STS entscheiden kann, bestimmte Features zu aktivieren. Wenn der Client beispielsweise Anspruchsaufforderungen verarbeiten kann, stellt STS möglicherweise Zugriffstoken für kontinuierliche Zugriffsauswertung (Continuous Access Evaluation, CAE) auf Ressourcen aus, wobei zu wissen ist, dass der Client diese Herausforderungen bewältigen kann, wenn die Ressource eine Anspruchsaufforderung ausgibt.

Implementierungsdetails: Die Clientfunktion wird zur zeit mithilfe des Parameters "Claims" im Draht implementiert. MSAL kombiniert sie in einem Anspruchsparameter , den Sie später über eine der Abrufen-Token-Anforderung bereitstellen.

Standardwert: None
azure_region
str

(optional) Weist MSAL an, den regionalen Entra-Tokendienst zu verwenden. Dieses Legacyfeature ist nur für Erstanbieteranwendungen verfügbar. Nur acquire_token_for_client() wird unterstützt.

Unterstützt vier Werte:

  1. azure_region=None - Dieser Standardwert bedeutet, dass keine Region konfiguriert ist. MSAL verwendet die region, die in env var MSAL_FORCE_REGIONdefiniert ist.

  2. azure_region="some_region" - bedeutet, dass die angegebene Region verwendet wird.

  3. azure_region=True - das bedeutet, dass MSAL versucht, die Region automatisch zu erkennen. Dies wird nicht empfohlen.

  4. azure_region=False - das bedeutet, dass MSAL keine Region verwendet.

Note

Die automatische Ermittlung der Region wurde auf virtuellen Computern und auf Azure Functions getestet. Es ist unzuverlässig.

Anwendungen, die diese Option verwenden, sollten ein kurzes Timeout konfigurieren.

Weitere Details und die Werte der Regionszeichenfolge

Sieh https://learn.microsoft.com/entra/msal/dotnet/resources/region-discovery-troubleshooting

Neu in Version 1.12.0.

Standardwert: None
exclude_scopes

(optional) In der Vergangenheit hardcodes MSAL offline_access Bereich, wodurch Ihre App längeren Zugriff auf die Daten des Benutzers haben würde. Wenn dies für Ihre App unnötig oder nicht erwünscht ist, können Sie diesen Parameter jetzt verwenden, um eine Ausschlussliste mit Bereichen wie z exclude_scopes = ["offline_access"]. B. .

Standardwert: None
http_cache

MSAL ist seit langem Zwischenspeicherungstoken in der token_cache. In letzter Zeit führte MSAL auch ein Konzept von http_cache, durch automatisches Zwischenspeichern einiger begrenzter Mengen von nicht tokenfreien HTTP-Antworten, so dass langelebigPublicClientApplication und ConfidentialClientApplication leistungsfähiger und reaktionsfähiger in einigen Situationen wäre.

Dieser http_cache Parameter akzeptiert ein beliebiges dict-like-Objekt. Wenn nicht angegeben, verwendet MSAL ein In-Memory-Diktat.

Wenn Es sich bei Ihrer App um eine Befehlszeilen-App (CLI) handelt, sollten Sie Ihre http_cache über unterschiedliche CLI-Ausführung hinweg beibehalten. Das Format der permanenten Datei kann sich aufgrund des instabilen Protokolls ändern, sodass ihre Implementierung unerwartete Ladefehler tolerieren muss. Das folgende Rezept zeigt eine Möglichkeit, dies zu tun:


   # Just add the following lines at the beginning of your CLI script
   import sys, atexit, pickle, logging
   http_cache_filename = sys.argv[0] + ".http_cache"
   try:
       with open(http_cache_filename, "rb") as f:
           persisted_http_cache = pickle.load(f)  # Take a snapshot
   except (
           FileNotFoundError,  # Or IOError in Python 2
           pickle.UnpicklingError,  # A corrupted http cache file
           AttributeError,  # Cache created by a different version of MSAL
           ):
       persisted_http_cache = {}  # Recover by starting afresh
   except:  # Unexpected exceptions
       logging.exception("You may want to debug this")
       persisted_http_cache = {}  # Recover by starting afresh
   atexit.register(lambda: pickle.dump(
       # When exit, flush it back to the file.
       # It may occasionally overwrite another process's concurrent write,
       # but that is fine. Subsequent runs will reach eventual consistency.
       persisted_http_cache, open(http_cache_file, "wb")))

   # And then you can implement your app as you normally would
   app = msal.PublicClientApplication(
       "your_client_id",
       ...,
       http_cache=persisted_http_cache,  # Utilize persisted_http_cache
       ...,
       #token_cache=...,  # You may combine the old token_cache trick
           # Please refer to token_cache recipe at
           # https://msal-python.readthedocs.io/en/latest/#msal.SerializableTokenCache
       )
   app.acquire_token_interactive(["your", "scope"], ...)

Inhalt innerhalb http_cache sind billig zu erhalten. Es ist nicht erforderlich, sie für verschiedene Apps freizugeben.

Inhalte innerhalb http_cache enthalten keine Token oder personenbezogene Informationen (Personally Identifiable Information, PII). Verschlüsselung ist unnötig.

Neu in Version 1.16.0.

Standardwert: None
instance_discovery
<xref:boolean>

In der Vergangenheit würde MSAL eine Verbindung mit einem zentralen Endpunkt herstellen, der sich befindet https://login.microsoftonline.com , um einige Metadaten zu erhalten, insbesondere bei Verwendung einer unbekannten Autorität. Dieses Verhalten wird als Instance Discovery bezeichnet.

Dieser Parameter ist standardmäßig "None", wodurch die Instanzermittlung aktiviert wird.

Wenn Sie einige Behörden kennen, mit denen MsAL mit as-isarbeiten kann, ohne Instance Discovery einzubeziehen, ist das empfohlene Muster:


   known_authorities = frozenset([  # Treat your known authorities as const
       "https://contoso.com/adfs", "https://login.azs/foo"])
   ...
   authority = "https://contoso.com/adfs"  # Assuming your app will use this
   app1 = PublicClientApplication(
       "client_id",
       authority=authority,
       # Conditionally disable Instance Discovery for known authorities
       instance_discovery=authority not in known_authorities,
       )

Wenn Sie einige Behörden vorher noch nicht kennen, möchten Sie dennoch, dass MSAL alle von Ihnen bereitgestellten Autoritäten akzeptiert, können Sie die False Instanzermittlung bedingungslos deaktivieren.

Neu in Version 1.19.0.

Standardwert: None
allow_broker
<xref:boolean>

Deprecated. Verwenden Sie stattdessen enable_broker_on_windows.

Standardwert: None
enable_pii_log
<xref:boolean>

Wenn diese Option aktiviert ist, können Protokolle PII (personenbezogene Informationen) enthalten. Dies kann bei der Problembehandlung bei Brokerverhalten hilfreich sein. Das Standardverhalten lautet "False".

Neu in Version 1.24.0.

Standardwert: None
oidc_authority
str

In Version 1.28.0 hinzugefügt: Es handelt sich um eine URL, die eine OpenID Connect (OIDC)-Autorität des Formats https://contoso.com/tenantidentifiziert. MSAL fügt ".well-known/openid-configuration" an die Autorität an und ruft die OIDC-Metadaten von dort ab, um die Endpunkte zu ermitteln.

Hinweis: Der Broker wird NICHT für die OIDC-Autorität verwendet.

Standardwert: None

Methoden

acquire_token_by_auth_code_flow

Überprüfen Sie die Authentifizierungsantwort, die zurückgeleitet wird, und rufen Sie Token ab.

Es bietet automatisch Nonce-Schutz.

acquire_token_by_authorization_code

Die zweite Hälfte der Autorisierungscodegenehmigung.

acquire_token_by_refresh_token

Abrufen von Token basierend auf einem Aktualisierungstoken (RT), das von einer anderen Stelle abgerufen wurde.

Sie verwenden diese Methode nur, wenn Sie über alte RTs von anderen Orten verfügen, und jetzt möchten Sie sie in MSAL migrieren. Das Aufrufen dieser Methode führt dazu, dass neue Token automatisch in MSAL gespeichert werden.

Sie müssen diese Methode NICHT verwenden, wenn Sie MSAL bereits verwenden. MSAL verwaltet RT automatisch im Tokencache, und ein Zugriffstoken kann abgerufen werden, wenn Sie aufrufen acquire_token_silent.

acquire_token_by_username_password

Ruft ein Token für eine bestimmte Ressource über Benutzeranmeldeinformationen ab.

Informationen zu Einschränkungen des Benutzernamen-Kennwortflusses finden Sie auf dieser Seite. https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki/Username-Password-Authentication

[Veraltet] Diese API ist für öffentliche Clientflüsse veraltet und wird in einer zukünftigen Version entfernt. Verwenden Sie stattdessen einen sichereren Ablauf. Migrationshandbuch: https://aka.ms/msal-ropc-migration

acquire_token_silent

Rufen Sie ein Zugriffstoken für ein bestimmtes Konto ohne Benutzerinteraktion ab.

Es hat dieselben Parameter wie die acquire_token_silent_with_error. Der Unterschied ist das Verhalten des Rückgabewerts. Mit dieser Methode wird der Cache leer und der Aktualisierungsfehler in einem Rückgabewert ( None) kombiniert. Wenn Ihre App sich nicht um den genauen Fehler bei der Tokenaktualisierung beim Nachschlagen des Tokencaches kümmert, ist diese Methode einfacher und empfohlen.

acquire_token_silent_with_error

Rufen Sie ein Zugriffstoken für ein bestimmtes Konto ohne Benutzerinteraktion ab.

Sie erfolgt entweder durch Suchen eines gültigen Zugriffstokens aus dem Cache oder durch Suchen eines gültigen Aktualisierungstokens aus dem Cache und anschließend automatisch zum Einlösen eines neuen Zugriffstokens.

Diese Methode unterscheidet den Cache leer vom Tokenaktualisierungsfehler. Wenn Ihre App den genauen Tokenaktualisierungsfehler beim Nachschlagen des Tokencaches kümmert, ist diese Methode geeignet. Andernfalls wird die andere Methode acquire_token_silent empfohlen.

get_accounts

Dient zum Abrufen einer Liste von Konten, die zuvor angemeldet sind, d. h. im Cache vorhanden ist.

Ein Konto kann später verwendet acquire_token_silent werden, um seine Token zu finden.

get_authorization_request_url

Erstellt eine URL zum Starten einer Autorisierungscodeerteilung.

initiate_auth_code_flow

Initiieren eines Authentifizierungscodeflusses.

Später, wenn die Antwort Ihre redirect_uri erreicht, können acquire_token_by_auth_code_flow Sie die Authentifizierung/Autorisierung abschließen.

is_pop_supported

Gibt True zurück, wenn dieser Client Zugriffstoken für den Nachweis des Besitzes unterstützt.

remove_account

Mich abmelden und mich aus dem Tokencache vergessen

acquire_token_by_auth_code_flow

Überprüfen Sie die Authentifizierungsantwort, die zurückgeleitet wird, und rufen Sie Token ab.

Es bietet automatisch Nonce-Schutz.

acquire_token_by_auth_code_flow(auth_code_flow, auth_response, scopes=None, **kwargs)

Parameter

Name Beschreibung
auth_code_flow
Erforderlich

Dasselbe Diktat, das von initiate_auth_code_flow.

auth_response
Erforderlich

Ein Diktat der Abfragezeichenfolge, die vom Authentifizierungsserver empfangen wurde.

scopes

Bereiche, die für den Zugriff auf eine geschützte API (eine Ressource) angefordert wurden.

Meistens können Sie sie leer lassen.

Wenn Sie die Zustimmung des Benutzers für mehrere Ressourcen angefordert haben, müssen Sie hier eine Teilmenge der erforderlichen initiate_auth_code_flowElemente angeben.

OAuth2 wurde hauptsächlich für Singletondienste entwickelt, bei denen Token immer für dieselbe Ressource vorgesehen sind und die einzigen Änderungen in den Bereichen enthalten sind. In Microsoft Entra können Token für mehrere Drittanbieterressourcen ausgestellt werden. Sie können autorisierungscode für mehrere Ressourcen anfordern, aber wenn Sie ihn einlösen, ist das Token nur für einen vorgesehenen Empfänger, der als Zielgruppe bezeichnet wird. Daher muss der Entwickler einen Bereich angeben, damit wir das Token einschränken können, das für die entsprechende Zielgruppe ausgestellt wird.

Standardwert: None

Gibt zurück

Typ Beschreibung
  • Ein Diktat mit "access_token" und/oder "id_token" hängt unter anderem davon ab, welcher Bereich verwendet wurde. (Siehe https://tools.ietf.org/html/rfc6749#section-5.1)

  • Ein Diktat mit "error", optional "error_description", "error_uri". (Das ist entweder dies oder das)

  • Die meisten clientseitigen Datenfehler würden zu einer ValueError-Ausnahme führen. So könnte das Verwendungsmuster ohne Protokolldetails sein:

    
       def authorize():  # A controller in a web app
           try:
               result = msal_app.acquire_token_by_auth_code_flow(
                   session.get("flow", {}), request.args)
               if "error" in result:
                   return render_template("error.html", result)
               use(result)  # Token(s) are available in result and cache
           except ValueError:  # Usually caused by CSRF
               pass  # Simply ignore them
           return redirect(url_for("index"))
    

acquire_token_by_authorization_code

Die zweite Hälfte der Autorisierungscodegenehmigung.

acquire_token_by_authorization_code(code, scopes, redirect_uri=None, nonce=None, claims_challenge=None, **kwargs)

Parameter

Name Beschreibung
code
Erforderlich

Der vom Autorisierungsserver zurückgegebene Autorisierungscode.

scopes
Erforderlich

(Erforderlich) Bereiche, die für den Zugriff auf eine geschützte API (eine Ressource) angefordert wurden.

Wenn Sie die Benutzerzustimmung für mehrere Ressourcen angefordert haben, möchten Sie hier in der Regel eine Teilmenge der erforderlichen Elemente in AuthCode bereitstellen.

OAuth2 wurde hauptsächlich für Singletondienste entwickelt, bei denen Token immer für dieselbe Ressource vorgesehen sind und die einzigen Änderungen in den Bereichen enthalten sind. In Microsoft Entra können Token für mehrere Drittanbieterressourcen ausgestellt werden. Sie können autorisierungscode für mehrere Ressourcen anfordern, aber wenn Sie ihn einlösen, ist das Token nur für einen vorgesehenen Empfänger, der als Zielgruppe bezeichnet wird. Daher muss der Entwickler einen Bereich angeben, damit wir das Token einschränken können, das für die entsprechende Zielgruppe ausgestellt wird.

nonce

Wenn Sie beim Aufrufen get_authorization_request_urleine Nonce angegeben haben, sollte hier auch die gleiche Nonce bereitgestellt werden, damit wir sie überprüfen. Eine Ausnahme wird ausgelöst, wenn die Nonce in ID-Token nicht übereinstimmen.

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. Es handelt sich um eine Zeichenfolge eines JSON-Objekts, das Listen von Ansprüchen enthält, die von diesen Speicherorten angefordert werden.

Standardwert: None
redirect_uri
Standardwert: None

Gibt zurück

Typ Beschreibung

Ein Diktat, das die JSON-Antwort von Microsoft Entra darstellt:

  • Eine erfolgreiche Antwort würde den Schlüssel "access_token" enthalten,

  • eine Fehlerantwort würde "error" und in der Regel "error_description" enthalten.

acquire_token_by_refresh_token

Abrufen von Token basierend auf einem Aktualisierungstoken (RT), das von einer anderen Stelle abgerufen wurde.

Sie verwenden diese Methode nur, wenn Sie über alte RTs von anderen Orten verfügen, und jetzt möchten Sie sie in MSAL migrieren. Das Aufrufen dieser Methode führt dazu, dass neue Token automatisch in MSAL gespeichert werden.

Sie müssen diese Methode NICHT verwenden, wenn Sie MSAL bereits verwenden. MSAL verwaltet RT automatisch im Tokencache, und ein Zugriffstoken kann abgerufen werden, wenn Sie aufrufen acquire_token_silent.

acquire_token_by_refresh_token(refresh_token, scopes, **kwargs)

Parameter

Name Beschreibung
refresh_token
Erforderlich
str

Das alte Aktualisierungstoken als Zeichenfolge.

scopes
Erforderlich

Die Bereiche, die diesem alten RT zugeordnet sind. Jeder Bereich muss sich im Microsoft Identity Platform (v2)-Format befinden. Siehe Bereiche, die keine Ressourcen sind.

Gibt zurück

Typ Beschreibung
  • Ein Diktat enthält "error" und einige andere Schlüssel, wenn ein Fehler aufgetreten ist.

  • Ein Diktat enthält keinen "Fehlerschlüssel", bedeutet, dass die Migration erfolgreich war.

acquire_token_by_username_password

Ruft ein Token für eine bestimmte Ressource über Benutzeranmeldeinformationen ab.

Informationen zu Einschränkungen des Benutzernamen-Kennwortflusses finden Sie auf dieser Seite. https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki/Username-Password-Authentication

[Veraltet] Diese API ist für öffentliche Clientflüsse veraltet und wird in einer zukünftigen Version entfernt. Verwenden Sie stattdessen einen sichereren Ablauf. Migrationshandbuch: https://aka.ms/msal-ropc-migration

acquire_token_by_username_password(username, password, scopes, claims_challenge=None, auth_scheme=None, **kwargs)

Parameter

Name Beschreibung
username
Erforderlich
str

In der Regel ein UPN in Form einer E-Mail-Adresse.

password
Erforderlich
str

Das Kennwort.

scopes
Erforderlich

Bereiche, die für den Zugriff auf eine geschützte API (eine Ressource) angefordert wurden.

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
auth_scheme

Sie können ein msal.auth_scheme.PopAuthScheme Objekt bereitstellen, damit MSAL ein POP-Token (Proof-of-Possession) für Sie erhält.

Neu in Version 1.26.0.

Standardwert: None

Gibt zurück

Typ Beschreibung

Ein Diktat, das die JSON-Antwort von Microsoft Entra darstellt:

  • Eine erfolgreiche Antwort würde den Schlüssel "access_token" enthalten,

  • eine Fehlerantwort würde "error" und in der Regel "error_description" enthalten.

acquire_token_silent

Rufen Sie ein Zugriffstoken für ein bestimmtes Konto ohne Benutzerinteraktion ab.

Es hat dieselben Parameter wie die acquire_token_silent_with_error. Der Unterschied ist das Verhalten des Rückgabewerts. Mit dieser Methode wird der Cache leer und der Aktualisierungsfehler in einem Rückgabewert ( None) kombiniert. Wenn Ihre App sich nicht um den genauen Fehler bei der Tokenaktualisierung beim Nachschlagen des Tokencaches kümmert, ist diese Methode einfacher und empfohlen.

acquire_token_silent(scopes, account, authority=None, force_refresh=False, claims_challenge=None, auth_scheme=None, **kwargs)

Parameter

Name Beschreibung
scopes
Erforderlich
account
Erforderlich
authority
Standardwert: None
force_refresh
Standardwert: False
claims_challenge
Standardwert: None
auth_scheme
Standardwert: None

Gibt zurück

Typ Beschreibung
  • Ein Diktat ohne Fehlerschlüssel und enthält in der Regel einen "access_token"-Schlüssel, wenn die Cachesuche erfolgreich war.

  • None when cache lookup does not yield a token.

acquire_token_silent_with_error

Rufen Sie ein Zugriffstoken für ein bestimmtes Konto ohne Benutzerinteraktion ab.

Sie erfolgt entweder durch Suchen eines gültigen Zugriffstokens aus dem Cache oder durch Suchen eines gültigen Aktualisierungstokens aus dem Cache und anschließend automatisch zum Einlösen eines neuen Zugriffstokens.

Diese Methode unterscheidet den Cache leer vom Tokenaktualisierungsfehler. Wenn Ihre App den genauen Tokenaktualisierungsfehler beim Nachschlagen des Tokencaches kümmert, ist diese Methode geeignet. Andernfalls wird die andere Methode acquire_token_silent empfohlen.

acquire_token_silent_with_error(scopes, account, authority=None, force_refresh=False, claims_challenge=None, auth_scheme=None, **kwargs)

Parameter

Name Beschreibung
scopes
Erforderlich

(Erforderlich) Bereiche, die für den Zugriff auf eine geschützte API (eine Ressource) angefordert wurden.

account
Erforderlich

(Erforderlich) Eines der kontoobjekt, von get_accountsdem zurückgegeben wird. Ab MSAL Python 1.23 wird eine None Eingabe zu einem NO-OP und wird immer zurückgegebenNone.

force_refresh

Wenn True, wird die Zugriffstokensuche übersprungen und versucht, ein Aktualisierungstoken zu finden, um ein neues Zugriffstoken abzurufen.

Standardwert: False
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
auth_scheme

Sie können ein msal.auth_scheme.PopAuthScheme Objekt bereitstellen, damit MSAL ein POP-Token (Proof-of-Possession) für Sie erhält.

Neu in Version 1.26.0.

Standardwert: None
authority
Standardwert: None

Gibt zurück

Typ Beschreibung
  • Ein Diktat ohne Fehlerschlüssel und enthält in der Regel einen "access_token"-Schlüssel, wenn die Cachesuche erfolgreich war.

  • Keine, wenn einfach kein Token im Cache vorhanden ist.

  • Ein Diktat mit einem Fehlerschlüssel, wenn die Tokenaktualisierung fehlgeschlagen ist.

get_accounts

Dient zum Abrufen einer Liste von Konten, die zuvor angemeldet sind, d. h. im Cache vorhanden ist.

Ein Konto kann später verwendet acquire_token_silent werden, um seine Token zu finden.

get_accounts(username=None)

Parameter

Name Beschreibung
username

Filtert Konten nur mit diesem Benutzernamen. Schreibungsunabhängig.

Standardwert: None

Gibt zurück

Typ Beschreibung

Eine Liste von Kontoobjekten. Jedes Konto ist ein Diktat. Bisher dokumentieren wir nur das Feld "Benutzername". Ihre App kann diese Informationen dem Endbenutzer anzeigen und dem Benutzer die Auswahl eines seiner Konten ermöglichen, um den Vorgang fortzusetzen.

get_authorization_request_url

Erstellt eine URL zum Starten einer Autorisierungscodeerteilung.

get_authorization_request_url(scopes, login_hint=None, state=None, redirect_uri=None, response_type='code', prompt=None, nonce=None, domain_hint=None, claims_challenge=None, **kwargs)

Parameter

Name Beschreibung
scopes
Erforderlich

(Erforderlich) Bereiche, die für den Zugriff auf eine geschützte API (eine Ressource) angefordert wurden.

state
str

Empfohlen von OAuth2 für CSRF-Schutz.

Standardwert: None
login_hint
str

Bezeichner des Benutzers. Im Allgemeinen ein Benutzerprinzipalname (User Principal Name, UPN).

Standardwert: None
redirect_uri
str

Adresse, an die nach Erhalt einer Antwort der Behörde zurückgegeben werden soll.

Standardwert: None
response_type
str

Der Standardwert ist "Code" für eine OAuth2-Autorisierungscodeerteilung.

Sie könnten andere Inhalte wie "id_token" oder "Token" verwenden, die eine implizite Erteilung auslösen würden, dies wird jedoch nicht empfohlen.

Standardwert: code
prompt
str

Standardmäßig wird kein Eingabeaufforderungswert gesendet, nicht einmal eine Zeichenfolge "none". Sie müssen einen Wert explizit angeben. Die gültigen Werte sind die konstanten, die in <xref:msal.Prompt>.

Standardwert: None
nonce

Ein kryptografisch zufälliger Wert, der verwendet wird, um Replay-Angriffe zu minimieren. Siehe auch OIDC-Spezifikationen.

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

Gibt zurück

Typ Beschreibung

Die Autorisierungs-URL als Zeichenfolge.

initiate_auth_code_flow

Initiieren eines Authentifizierungscodeflusses.

Später, wenn die Antwort Ihre redirect_uri erreicht, können acquire_token_by_auth_code_flow Sie die Authentifizierung/Autorisierung abschließen.

initiate_auth_code_flow(scopes, redirect_uri=None, state=None, prompt=None, login_hint=None, domain_hint=None, claims_challenge=None, max_age=None, response_mode=None)

Parameter

Name Beschreibung
scopes
Erforderlich

Es handelt sich um eine Liste mit Zeichenfolgen mit Groß-/Kleinschreibung.

redirect_uri
str

Dies ist optional. Wenn nicht angegeben, verwendet der Server die vorinstallierte.

Standardwert: None
state
str

Ein nicht transparenter Wert, der vom Client verwendet wird, um den Zustand zwischen der Anforderung und dem Rückruf beizubehalten. Wenn sie nicht vorhanden ist, generiert diese Bibliothek automatisch eine intern.

Standardwert: None
prompt
str

Standardmäßig wird kein Eingabeaufforderungswert gesendet, nicht einmal eine Zeichenfolge "none". Sie müssen einen Wert explizit angeben. Die gültigen Werte sind die konstanten, die in <xref:msal.Prompt>.

Standardwert: None
login_hint
str

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
max_age
int

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
response_mode
str

Optional. Gibt die Methode an, mit der Antwortparameter zurückgegeben werden sollen. Der Standardwert entspricht querydem, was in MSAL Python noch sicher genug war (da MSAL Python Token nicht über den Abfrageparameter an erster Stelle überträgt). Für noch bessere Sicherheit empfehlen wir die Verwendung des Werts form_post. Im Modus "form_post" werden Die Antwortparameter als HTML-Formularwerte codiert, die über die HTTP POST-Methode übertragen und im Textkörper mithilfe des Anwendungs-/x-www-form-urlencoded-Formats codiert werden. Gültige Werte können entweder "form_post" für HTTP POST sein, um Rückruf-URI oder "Abfrage" (standard) für HTTP GET mit Parametern zu codieren, die in der Abfragezeichenfolge codiert sind. Weitere Informationen zu möglichen Werten hier https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes und hier https://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html#FormPostResponseMode

Note

Sie sollten Ihr Webframework so konfigurieren, dass form_post Antworten anstelle von Abfrageantworten akzeptiert werden.

Während dieser Parameter noch funktioniert, wird er in einer zukünftigen Version entfernt.

Die Verwendung abfragebasierter Antwortmodi ist weniger sicher und sollte vermieden werden.

Standardwert: None
claims_challenge
Standardwert: None

Gibt zurück

Typ Beschreibung

Der Authentifizierungscodefluss. Es handelt sich um ein Diktat in dieser Form:


   {
       "auth_uri": "https://...",  // Guide user to visit this
       "state": "...",  // You may choose to verify it by yourself,
                        // or just let acquire_token_by_auth_code_flow()
                        // do that for you.
       "...": "...",  // Everything else are reserved and internal
   }

Der Aufrufer wird erwartet, dass:

  1. Speichern Sie diesen Inhalt irgendwie, in der Regel innerhalb der aktuellen Sitzung,

  2. führen Sie den Endbenutzer (d. h. Ressourcenbesitzer) dazu, diesen auth_uri zu besuchen,

  3. und übermitteln Sie dann dieses Diktat und die nachfolgende Authentifizierungsantwort an acquire_token_by_auth_code_flow.

is_pop_supported

Gibt True zurück, wenn dieser Client Zugriffstoken für den Nachweis des Besitzes unterstützt.

is_pop_supported()

remove_account

Mich abmelden und mich aus dem Tokencache vergessen

remove_account(account)

Parameter

Name Beschreibung
account
Erforderlich

Attribute

ACQUIRE_TOKEN_BY_AUTHORIZATION_CODE_ID

ACQUIRE_TOKEN_BY_AUTHORIZATION_CODE_ID = '832'

ACQUIRE_TOKEN_BY_DEVICE_FLOW_ID

ACQUIRE_TOKEN_BY_DEVICE_FLOW_ID = '622'

ACQUIRE_TOKEN_BY_REFRESH_TOKEN

ACQUIRE_TOKEN_BY_REFRESH_TOKEN = '85'

ACQUIRE_TOKEN_BY_USERNAME_PASSWORD_ID

ACQUIRE_TOKEN_BY_USERNAME_PASSWORD_ID = '301'

ACQUIRE_TOKEN_FOR_CLIENT_ID

ACQUIRE_TOKEN_FOR_CLIENT_ID = '730'

ACQUIRE_TOKEN_INTERACTIVE

ACQUIRE_TOKEN_INTERACTIVE = '169'

ACQUIRE_TOKEN_ON_BEHALF_OF_ID

ACQUIRE_TOKEN_ON_BEHALF_OF_ID = '523'

ACQUIRE_TOKEN_SILENT_ID

ACQUIRE_TOKEN_SILENT_ID = '84'

ATTEMPT_REGION_DISCOVERY

ATTEMPT_REGION_DISCOVERY = True

DISABLE_MSAL_FORCE_REGION

DISABLE_MSAL_FORCE_REGION = False

GET_ACCOUNTS_ID

GET_ACCOUNTS_ID = '902'

REMOVE_ACCOUNT_ID

REMOVE_ACCOUNT_ID = '903'