ClientApplication Classe

In genere non si usa direttamente questa classe. Usare invece le relative sottoclassi: PublicClientApplication e ConfidentialClientApplication.

Creare un'istanza dell'applicazione.

Costruttore

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)

Parametri

Nome Descrizione
client_id
Necessario
str

L'app ha un client_id dopo averlo registrato in Interfaccia di amministrazione di Microsoft Entra.

client_credential

Per PublicClientApplication, usare Nessuno qui.

Per ConfidentialClientApplication, supporta molti formati di input diversi per scenari diversi.

Supporto per l'uso di un segreto client. È sufficiente inserire un feed in una stringa, ad esempio "your client secret".

Supporto dell'uso di un certificato in formato X.509 (con estensione pem)Deprecated perché usa l'identificazione personale SHA-1,

a meno che non si stia ancora usando ADFS che supporta solo l'identificazione personale SHA-1. Usare l'opzione pfx documentata più avanti in questa pagina. Feed in un dict in questo formato:


   {
       "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 richiede un "private_key" in formato PEM. Se il certificato è in formato PKCS12 (pfx), è possibile convertirlo in formato X.509 (pem), da openssl pkcs12 -in file.pfx -out file.pem -nodes. L'identificazione personale è disponibile nella registrazione dell'app in portale di Azure. In alternativa, è possibile calcolare l'identificazione personale. public_certificate (facoltativo) è un certificato di chiave pubblica che verrà inviato tramite l'intestazione JWT 'x5c'. Ciò è utile quando si usa l'autenticazione con nome soggetto/autorità di certificazione , che è un approccio per semplificare la rotazione dei certificati. In base alle specifiche, "il certificato contenente la chiave pubblica corrispondente alla chiave usata per firmare digitalmente il JWS DEVE essere il primo certificato. Questo PUÒ essere seguito da certificati aggiuntivi, con ogni certificato successivo usato per certificare quello precedente". Tuttavia, l'autorità emittente del certificato può usare un ordine diverso. Pertanto, se il tentativo termina con un errore AADSTS700027 - "Il valore della firma specificato non corrisponde al valore della firma previsto", è possibile provare a usare solo il certificato foglia (in formato PEM/str).

Supporto dell'asserzione non elaborata ottenuta da altroveaggiunta nella versione 1.13.0:

Può anche essere un'asserzione completamente prefirmata che hai assemblato manualmente. È sufficiente passare un contenitore contenente solo la chiave "client_assertion", come illustrato di seguito:


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

Supporto della lettura dei certificati client dai file PFXQuesto utilizzo userà automaticamente l'identificazione personale SHA-256 del certificato. Aggiunta nella versione 1.29.0:

Feed in un dizionario contenente il percorso di un file PFX:


   {
       "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)",
   }

Il comando seguente genererà un file con estensione pfx dal file .key e pem:


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

L'autenticazione con nome soggetto/autorità di certificazione è un approccio per semplificare la rotazione dei certificati. Se il file con estensione pfx contiene sia la chiave privata che il certificato pubblico, è possibile acconsentire esplicitamente all'autenticazione nome soggetto/autorità emittente impostando "public_certificate" su True.

Valore predefinito: None
client_claims

Aggiunta nella versione 0.5.0: si tratta di un dizionario di attestazioni aggiuntive firmate da questa ConfidentialClientApplication chiave privata. Ad esempio, è possibile usare {"client_ip": "x.x.x.x"}. È anche possibile eseguire l'override di una delle attestazioni predefinite seguenti:


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

URL che identifica un'autorità di token. Deve essere del formato https://login.microsoftonline.com/your_tenant Per impostazione predefinita, verrà usato https://login.microsoftonline.com/common

Modificata nella versione 1.17: è anche possibile usare una costante predefinita e un generatore simile al seguente:


   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, ...)
Valore predefinito: None
validate_authority

(facoltativo) Attiva o disattiva la convalida dell'autorità. Questo parametro è true per impostazione predefinita.

Valore predefinito: True
token_cache

Imposta la cache dei token usata da questa istanza di ClientApplication. Per impostazione predefinita, verrà creata e usata una cache in memoria.

Valore predefinito: None
http_client

(facoltativo) L'implementazione della classe astratta HttpClient <msal.oauth2cli.http.http_client> Defaults a un'istanza di sessione delle richieste. Poiché MSAL 1.11.0, la sessione predefinita sarà configurata per tentare un nuovo tentativo in caso di errore di connessione. Se si fornisce il proprio http_client, sarà il dovere dell'http_client decidere se eseguire un nuovo tentativo.

Valore predefinito: None
verify

(facoltativo) Verrà passato al parametro verify nella libreria delle richieste sottostanti Questo non si applica se si è scelto di passare il proprio client Http

Valore predefinito: True
proxies

(facoltativo) Verrà passato al parametro proxy nella libreria delle richieste sottostanti Questo non si applica se si è scelto di passare il client Http personalizzato

Valore predefinito: None
timeout

(facoltativo) Verrà passato al parametro di timeout nella libreria delle richieste sottostante Questo non si applica se si è scelto di passare il proprio client Http

Valore predefinito: None
app_name

(facoltativo) È possibile specificare il nome dell'applicazione per Microsoft scopi di telemetria. Il valore predefinito è Nessuno, significa che non verrà passato a Microsoft.

Valore predefinito: None
app_version

(facoltativo) È possibile fornire la versione dell'applicazione per scopi di telemetria Microsoft. Il valore predefinito è Nessuno, significa che non verrà passato a Microsoft.

Valore predefinito: None
client_capabilities

(facoltativo) Consente la configurazione di una o più funzionalità client, ad esempio ["CP1"].

La funzionalità client è destinata a informare il Microsoft Identity Platform (STS) per ciò che il client è in grado di supportare, in modo che il servizio token di sicurezza possa decidere di attivare determinate funzionalità. Ad esempio, se il client è in grado di gestire la richiesta di attestazioni, il servizio token di sicurezza potrebbe emettere token di accesso CAE (Continuous Access Evaluation) alle risorse, sapendo che quando la risorsa genera una richiesta di attestazioni il client sarà in grado di gestire tali sfide.

Dettagli di implementazione: la funzionalità client viene implementata usando il parametro "claims" in transito, per il momento. MSAL li combina in un parametro di attestazione che verrà fornito in un secondo momento tramite una della richiesta acquire-token.

Valore predefinito: None
azure_region
str

(facoltativo) Indica a MSAL di usare il servizio token regionale Entra. Questa funzionalità legacy è disponibile solo per le applicazioni proprietarie. È supportato solo acquire_token_for_client().

Supporta 4 valori:

  1. azure_region=None - Questo valore predefinito indica che non è configurata alcuna area. MSAL userà l'area definita in env var MSAL_FORCE_REGION.

  2. azure_region="some_region" : indica che viene usata l'area specificata.

  3. azure_region=True - ovvero MSAL tenterà di rilevare automaticamente l'area. Questo non è consigliato.

  4. azure_region=False - ovvero MSAL non userà alcuna area.

Note

L'individuazione automatica dell'area è stata testata nelle macchine virtuali e in Funzioni di Azure. È inaffidabile.

Le applicazioni che usano questa opzione devono configurare un timeout breve.

Per altri dettagli e per i valori della stringa di area

Vedere https://dotnet.territoriali.olinfo.it/entra/msal/dotnet/resources/region-discovery-troubleshooting

Novità nella versione 1.12.0.

Valore predefinito: None
exclude_scopes

(facoltativo) Storicamente MSAL hardcodes offline_access ambito , che consentirebbe all'app di avere accesso prolungato ai dati dell'utente. Se non è necessario o indesiderato per l'app, è ora possibile usare questo parametro per fornire un elenco di esclusioni di ambiti, ad esempio exclude_scopes = ["offline_access"].

Valore predefinito: None
http_cache

MSAL ha da molto tempo memorizzato nella cache i token in token_cache. Di recente, MSAL ha anche introdotto un concetto di http_cache, memorizzando automaticamente nella cache una quantità limitata di risposte HTTP non token, in modo che di lunga durataPublicClientApplication e ConfidentialClientApplication sarebbe più efficiente e reattivo in alcune situazioni.

Questo http_cache parametro accetta qualsiasi oggetto dict-like. Se non specificato, MSAL userà un dict in memoria.

Se l'app è un'app della riga di comando, è consigliabile rendere persistente il http_cache in diverse esecuzioni dell'interfaccia della riga di comando. Il formato del file persistente può cambiare a causa, ma non limitato al protocollo instabile, in modo che l'implementazione tolleri errori di caricamento imprevisti. La ricetta seguente illustra un modo per farlo:


   # 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"], ...)

I contenuti all'interno http_cache sono economici da ottenere. Non è necessario condividerli tra app diverse.

Il contenuto all'interno non conterrà token né informazioni personali.Content inside http_cache will contain no tokens nor Personally Identifiable Information (PII). La crittografia non è necessaria.

Novità nella versione 1.16.0.

Valore predefinito: None
instance_discovery
<xref:boolean>

In passato, MSAL si connetteva a un endpoint centrale in https://login.microsoftonline.com per acquisire alcuni metadati, soprattutto quando si usa un'autorità non familiare. Questo comportamento è noto come Individuazione istanza.

Per impostazione predefinita, questo parametro è Nessuno, che abilita l'individuazione dell'istanza.

Se si conoscono alcune autorità che consentono a MSAL di operare con as-is, senza coinvolgere l'individuazione di istanze, il modello consigliato è:


   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,
       )

Se non si conoscono in anticipo alcune autorità, ma si vuole comunque che MSAL accetti qualsiasi autorità che si fornirà, è possibile usare un per False disabilitare in modo incondizionato l'individuazione dell'istanza.

Novità nella versione 1.19.0.

Valore predefinito: None
allow_broker
<xref:boolean>

Deprecated. Per favore, usa enable_broker_on_windows invece.

Valore predefinito: None
enable_pii_log
<xref:boolean>

Se abilitata, i log possono includere informazioni personali (informazioni personali). Ciò può essere utile per la risoluzione dei problemi relativi ai comportamenti del broker. Il comportamento predefinito è False.

Novità nella versione 1.24.0.

Valore predefinito: None
oidc_authority
str

Aggiunta nella versione 1.28.0: è un URL che identifica un'autorità OIDC (OpenID Connect) del formato https://contoso.com/tenant. MSAL aggiungerà ".well-known/openid-configuration" all'autorità e recupererà i metadati OIDC da questa posizione per individuare gli endpoint.

Nota: Broker non verrà usato per l'autorità OIDC.

Valore predefinito: None

Metodi

acquire_token_by_auth_code_flow

Convalidare la risposta di autenticazione reindirizzata e ottenere i token.

Fornisce automaticamente la protezione nonce.

acquire_token_by_authorization_code

Seconda metà della concessione del codice di autorizzazione.

acquire_token_by_refresh_token

Acquisire i token in base a un token di aggiornamento (RT) ottenuto altrove.

Questo metodo viene usato solo quando si dispone di RTS precedenti da un'altra posizione e ora si vuole eseguirne la migrazione in MSAL. La chiamata a questo metodo comporta l'archiviazione automatica di nuovi token in MSAL.

Non è necessario usare questo metodo se si usa già MSAL. MSAL gestisce automaticamente RT all'interno della cache dei token e un token di accesso può essere recuperato quando si chiama acquire_token_silent.

acquire_token_by_username_password

Ottiene un token per una determinata risorsa tramite credenziali utente.

Vedere questa pagina per i vincoli del flusso di password utente. https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki/Username-Password-Authentication

[Deprecato] Questa API è deprecata per i flussi client pubblici e verrà rimossa in una versione futura. Usare invece un flusso più sicuro. Guida alla migrazione: https://aka.ms/msal-ropc-migration

acquire_token_silent

Acquisire un token di accesso per un determinato account, senza interazione dell'utente.

Ha gli stessi parametri di acquire_token_silent_with_error. La differenza è il comportamento del valore restituito. Questo metodo combina l'errore vuoto e di aggiornamento della cache in un unico valore restituito , Nessuno. Se l'app non si preoccupa dell'esatto errore di aggiornamento del token durante la ricerca nella cache dei token, questo metodo è più semplice e consigliato.

acquire_token_silent_with_error

Acquisire un token di accesso per un determinato account, senza interazione dell'utente.

Questa operazione viene eseguita trovando un token di accesso valido dalla cache o trovando un token di aggiornamento valido dalla cache e quindi usarlo automaticamente per riscattare un nuovo token di accesso.

Questo metodo distinguerà la cache vuota dall'errore di aggiornamento del token. Se l'app cura l'errore esatto di aggiornamento del token durante la ricerca nella cache dei token, questo metodo è adatto. In caso contrario, l'altro metodo acquire_token_silent è consigliato.

get_accounts

Ottenere un elenco di account che in precedenza hanno eseguito l'accesso, ad esempio esiste nella cache.

Un account può essere usato in un secondo momento in acquire_token_silent per trovare i relativi token.

get_authorization_request_url

Costruisce un URL per avviare una concessione del codice di autorizzazione.

initiate_auth_code_flow

Avviare un flusso di codice di autenticazione.

Successivamente, quando la risposta raggiunge il redirect_uri, è possibile usare acquire_token_by_auth_code_flow per completare l'autenticazione/autorizzazione.

is_pop_supported

Restituisce True se il client supporta il token di accesso proof-of-possession.

remove_account

Disconnettersi e dimenticarmi dalla cache dei token

acquire_token_by_auth_code_flow

Convalidare la risposta di autenticazione reindirizzata e ottenere i token.

Fornisce automaticamente la protezione nonce.

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

Parametri

Nome Descrizione
auth_code_flow
Necessario

Lo stesso dict restituito da initiate_auth_code_flow.

auth_response
Necessario

Valore dict della stringa di query ricevuta dal server di autenticazione.

scopes

Ambiti richiesti per accedere a un'API protetta (una risorsa).

Nella maggior parte dei casi, è possibile lasciarlo vuoto.

Se è stato richiesto il consenso dell'utente per più risorse, in questo caso sarà necessario fornire un subset di ciò che è necessario in initiate_auth_code_flow.

OAuth2 è stato progettato principalmente per i servizi singleton, in cui i token sono sempre destinati alla stessa risorsa e le uniche modifiche sono negli ambiti. In Microsoft Entra, i token possono essere emessi per più risorse di terze parti. È possibile richiedere il codice di autorizzazione per più risorse, ma quando lo si riscatta, il token è destinato a un solo destinatario previsto, denominato gruppo di destinatari. Lo sviluppatore deve quindi specificare un ambito in modo che sia possibile limitare l'emissione del token per il gruppo di destinatari corrispondente.

Valore predefinito: None

Valori restituiti

Tipo Descrizione
  • Un dict contenente "access_token" e/o "id_token", tra gli altri, dipende dall'ambito usato. (Vedere https://tools.ietf.org/html/rfc6749#section-5.1)

  • Valore dict contenente "error", facoltativamente "error_description", "error_uri". (O questo o che)

  • La maggior parte degli errori di dati sul lato client genera un'eccezione ValueError. Pertanto, il modello di utilizzo potrebbe essere senza dettagli del protocollo:

    
       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

Seconda metà della concessione del codice di autorizzazione.

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

Parametri

Nome Descrizione
code
Necessario

Codice di autorizzazione restituito dal server di autorizzazione.

scopes
Necessario

(Obbligatorio) Ambiti richiesti per accedere a un'API protetta (una risorsa).

Se è stato richiesto il consenso dell'utente per più risorse, in genere si vuole fornire un subset di ciò che è necessario in AuthCode.

OAuth2 è stato progettato principalmente per i servizi singleton, in cui i token sono sempre destinati alla stessa risorsa e le uniche modifiche sono negli ambiti. In Microsoft Entra, i token possono essere emessi per più risorse di terze parti. È possibile richiedere il codice di autorizzazione per più risorse, ma quando lo si riscatta, il token è destinato a un solo destinatario previsto, denominato gruppo di destinatari. Lo sviluppatore deve quindi specificare un ambito in modo che sia possibile limitare l'emissione del token per il gruppo di destinatari corrispondente.

nonce

Se è stato specificato un nonce quando si chiama get_authorization_request_url, è necessario specificare anche lo stesso nonce, in modo da convalidarlo. Se il nonce nel token ID non corrisponde, verrà generata un'eccezione.

Valore predefinito: None
claims_challenge

Il parametro claims_challenge richiede attestazioni specifiche richieste dal provider di risorse sotto forma di direttiva claims_challenge nell'intestazione www-authenticate da restituire dall'endpoint UserInfo e/o nel token ID e/o nel token di accesso. Si tratta di una stringa di un oggetto JSON che contiene elenchi di attestazioni richieste da queste posizioni.

Valore predefinito: None
redirect_uri
Valore predefinito: None

Valori restituiti

Tipo Descrizione

Valore dict che rappresenta la risposta json da Microsoft Entra:

  • Una risposta con esito positivo conterrà la chiave "access_token",

  • una risposta di errore contiene "error" e in genere "error_description".

acquire_token_by_refresh_token

Acquisire i token in base a un token di aggiornamento (RT) ottenuto altrove.

Questo metodo viene usato solo quando si dispone di RTS precedenti da un'altra posizione e ora si vuole eseguirne la migrazione in MSAL. La chiamata a questo metodo comporta l'archiviazione automatica di nuovi token in MSAL.

Non è necessario usare questo metodo se si usa già MSAL. MSAL gestisce automaticamente RT all'interno della cache dei token e un token di accesso può essere recuperato quando si chiama acquire_token_silent.

acquire_token_by_refresh_token(refresh_token, scopes, **kwargs)

Parametri

Nome Descrizione
refresh_token
Necessario
str

Token di aggiornamento precedente, come stringa.

scopes
Necessario

Gli ambiti associati a questo rt precedente. Ogni ambito deve essere nel formato Microsoft Identity Platform (v2). Vedere Ambiti non risorse.

Valori restituiti

Tipo Descrizione
  • Un dict contiene "error" e altre chiavi, quando si è verificato un errore.

  • Un elemento dict non contiene una chiave di errore indica che la migrazione ha avuto esito positivo.

acquire_token_by_username_password

Ottiene un token per una determinata risorsa tramite credenziali utente.

Vedere questa pagina per i vincoli del flusso di password utente. https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki/Username-Password-Authentication

[Deprecato] Questa API è deprecata per i flussi client pubblici e verrà rimossa in una versione futura. Usare invece un flusso più sicuro. Guida alla migrazione: https://aka.ms/msal-ropc-migration

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

Parametri

Nome Descrizione
username
Necessario
str

In genere un UPN sotto forma di indirizzo di posta elettronica.

password
Necessario
str

La password.

scopes
Necessario

Ambiti richiesti per accedere a un'API protetta (una risorsa).

claims_challenge

Il parametro claims_challenge richiede attestazioni specifiche richieste dal provider di risorse sotto forma di direttiva claims_challenge nell'intestazione www-authenticate da restituire dall'endpoint UserInfo e/o nel token ID e/o nel token di accesso. Si tratta di una stringa di un oggetto JSON che contiene elenchi di attestazioni richieste da queste posizioni.

Valore predefinito: None
auth_scheme

È possibile fornire un msal.auth_scheme.PopAuthScheme oggetto in modo che MSAL ottenga un token POP (Proof-of-Possession).

Novità nella versione 1.26.0.

Valore predefinito: None

Valori restituiti

Tipo Descrizione

Valore dict che rappresenta la risposta json da Microsoft Entra:

  • Una risposta con esito positivo conterrà la chiave "access_token",

  • una risposta di errore contiene "error" e in genere "error_description".

acquire_token_silent

Acquisire un token di accesso per un determinato account, senza interazione dell'utente.

Ha gli stessi parametri di acquire_token_silent_with_error. La differenza è il comportamento del valore restituito. Questo metodo combina l'errore vuoto e di aggiornamento della cache in un unico valore restituito , Nessuno. Se l'app non si preoccupa dell'esatto errore di aggiornamento del token durante la ricerca nella cache dei token, questo metodo è più semplice e consigliato.

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

Parametri

Nome Descrizione
scopes
Necessario
account
Necessario
authority
Valore predefinito: None
force_refresh
Valore predefinito: False
claims_challenge
Valore predefinito: None
auth_scheme
Valore predefinito: None

Valori restituiti

Tipo Descrizione
  • Un dict contenente nessuna chiave di errore e in genere contiene una chiave "access_token", se la ricerca nella cache ha avuto esito positivo.

  • Nessuno quando la ricerca nella cache non restituisce un token.

acquire_token_silent_with_error

Acquisire un token di accesso per un determinato account, senza interazione dell'utente.

Questa operazione viene eseguita trovando un token di accesso valido dalla cache o trovando un token di aggiornamento valido dalla cache e quindi usarlo automaticamente per riscattare un nuovo token di accesso.

Questo metodo distinguerà la cache vuota dall'errore di aggiornamento del token. Se l'app cura l'errore esatto di aggiornamento del token durante la ricerca nella cache dei token, questo metodo è adatto. In caso contrario, l'altro metodo acquire_token_silent è consigliato.

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

Parametri

Nome Descrizione
scopes
Necessario

(Obbligatorio) Ambiti richiesti per accedere a un'API protetta (una risorsa).

account
Necessario

(Obbligatorio) Uno degli oggetti account restituiti da get_accounts. A partire da MSAL Python 1.23, un None input diventerà un NO-OP e restituirà Nonesempre .

force_refresh

Se True, salterà la ricerca del token di accesso e tenterà di trovare un token di aggiornamento per ottenere un nuovo token di accesso.

Valore predefinito: False
claims_challenge

Il parametro claims_challenge richiede attestazioni specifiche richieste dal provider di risorse sotto forma di direttiva claims_challenge nell'intestazione www-authenticate da restituire dall'endpoint UserInfo e/o nel token ID e/o nel token di accesso. Si tratta di una stringa di un oggetto JSON che contiene elenchi di attestazioni richieste da queste posizioni.

Valore predefinito: None
auth_scheme

È possibile fornire un msal.auth_scheme.PopAuthScheme oggetto in modo che MSAL ottenga un token POP (Proof-of-Possession).

Novità nella versione 1.26.0.

Valore predefinito: None
authority
Valore predefinito: None

Valori restituiti

Tipo Descrizione
  • Un dict contenente nessuna chiave di errore e in genere contiene una chiave "access_token", se la ricerca nella cache ha avuto esito positivo.

  • Nessuno quando nella cache non è presente semplicemente alcun token.

  • Valore dict contenente una chiave "error", quando l'aggiornamento del token non è riuscito.

get_accounts

Ottenere un elenco di account che in precedenza hanno eseguito l'accesso, ad esempio esiste nella cache.

Un account può essere usato in un secondo momento in acquire_token_silent per trovare i relativi token.

get_accounts(username=None)

Parametri

Nome Descrizione
username

Filtrare gli account solo con questo nome utente. Senza distinzione tra maiuscole e minuscole.

Valore predefinito: None

Valori restituiti

Tipo Descrizione

Elenco di oggetti account. Ogni account è un dict. Per il momento, documentiamo solo il campo "nome utente". L'app può scegliere di visualizzare tali informazioni all'utente finale e consentire all'utente di scegliere uno dei suoi account per continuare.

get_authorization_request_url

Costruisce un URL per avviare una concessione del codice di autorizzazione.

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)

Parametri

Nome Descrizione
scopes
Necessario

(Obbligatorio) Ambiti richiesti per accedere a un'API protetta (una risorsa).

state
str

Consigliato da OAuth2 per la protezione CSRF.

Valore predefinito: None
login_hint
str

Identificatore dell'utente. In genere un nome dell'entità utente (UPN).

Valore predefinito: None
redirect_uri
str

Indirizzo a cui tornare dopo aver ricevuto una risposta dall'autorità.

Valore predefinito: None
response_type
str

Il valore predefinito è "code" per una concessione del codice di autorizzazione OAuth2.

È possibile usare altri contenuti, ad esempio "id_token" o "token", che attiverebbero una concessione implicita, ma non è consigliabile.

Valore predefinito: code
prompt
str

Per impostazione predefinita, non verrà inviato alcun valore di richiesta, nemmeno stringa "none". Sarà necessario specificare un valore in modo esplicito. I valori validi sono le costanti definite in <xref:msal.Prompt>.

Valore predefinito: None
nonce

Valore crittograficamente casuale usato per attenuare gli attacchi di riproduzione. Vedere anche Specifiche OIDC.

Valore predefinito: None
domain_hint

Può essere uno dei "consumer" o "organizzazioni" o del dominio tenant "contoso.com". Se incluso, ignora il processo di individuazione basato sulla posta elettronica che l'utente passa attraverso la pagina di accesso, con un'esperienza utente leggermente più semplificata. Altre informazioni sui possibili valori disponibili nella documentazione flusso di codice di autenticazione e domain_hint documentazione.

Valore predefinito: None
claims_challenge

Il parametro claims_challenge richiede attestazioni specifiche richieste dal provider di risorse sotto forma di direttiva claims_challenge nell'intestazione www-authenticate da restituire dall'endpoint UserInfo e/o nel token ID e/o nel token di accesso. Si tratta di una stringa di un oggetto JSON che contiene elenchi di attestazioni richieste da queste posizioni.

Valore predefinito: None

Valori restituiti

Tipo Descrizione

URL di autorizzazione come stringa.

initiate_auth_code_flow

Avviare un flusso di codice di autenticazione.

Successivamente, quando la risposta raggiunge il redirect_uri, è possibile usare acquire_token_by_auth_code_flow per completare l'autenticazione/autorizzazione.

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)

Parametri

Nome Descrizione
scopes
Necessario

È un elenco di stringhe con distinzione tra maiuscole e minuscole.

redirect_uri
str

Optional. Se non specificato, il server userà quello preregistrato.

Valore predefinito: None
state
str

Valore opaco utilizzato dal client per mantenere lo stato tra la richiesta e il callback. Se assente, questa libreria genererà automaticamente una internamente.

Valore predefinito: None
prompt
str

Per impostazione predefinita, non verrà inviato alcun valore di richiesta, nemmeno stringa "none". Sarà necessario specificare un valore in modo esplicito. I valori validi sono le costanti definite in <xref:msal.Prompt>.

Valore predefinito: None
login_hint
str

Optional. Identificatore dell'utente. In genere un nome dell'entità utente (UPN).

Valore predefinito: None
domain_hint

Può essere uno dei "consumer" o "organizzazioni" o del dominio tenant "contoso.com". Se incluso, ignora il processo di individuazione basato sulla posta elettronica che l'utente passa attraverso la pagina di accesso, con un'esperienza utente leggermente più semplificata. Altre informazioni sui possibili valori disponibili nella documentazione flusso di codice di autenticazione e domain_hint documentazione.

Valore predefinito: None
max_age
int

FACOLTATIVO Validità massima dell'autenticazione. Specifica il tempo consentito trascorso in secondi dall'ultima autenticazione del End-User. Se il tempo trascorso è maggiore di questo valore, Microsoft Identity Platform eseguirà attivamente l'autenticazione dell'utente finale.

MSAL Python convaliderà automaticamente anche il auth_time nel token ID.

Novità nella versione 1.15.

Valore predefinito: None
response_mode
str

FACOLTATIVO Specifica il metodo con cui devono essere restituiti i parametri di risposta. Il valore predefinito è equivalente a query, che era ancora abbastanza sicuro in MSAL Python (perché MSAL Python non trasferisce i token tramite il parametro di query al primo posto). Per una maggiore sicurezza, è consigliabile usare il valore form_post. In modalità "form_post", i parametri di risposta verranno codificati come valori di modulo HTML trasmessi tramite il metodo HTTP POST e codificati nel corpo usando il formato application/x-www-form-urlencoded. I valori validi possono essere "form_post" per HTTP POST per il callback URI o "query" (impostazione predefinita) per HTTP GET con parametri codificati nella stringa di query. Altre informazioni sui valori possibili sono disponibili qui https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes e qui https://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html#FormPostResponseMode

Note

È consigliabile configurare il framework Web in modo da accettare form_post risposte anziché risposte alle query.

Anche se questo parametro funziona ancora, verrà rimosso in una versione futura.

L'uso delle modalità di risposta basata su query è meno sicuro e deve essere evitato.

Valore predefinito: None
claims_challenge
Valore predefinito: None

Valori restituiti

Tipo Descrizione

Flusso del codice di autenticazione. È un dict in questo formato:


   {
       "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
   }

È previsto che il chiamante:

  1. in qualche modo archiviare questo contenuto, in genere all'interno della sessione corrente,

  2. guidare l'utente finale (ad esempio il proprietario della risorsa) a visitare tale auth_uri,

  3. e quindi inoltrare questa dict e la risposta di autenticazione successiva a acquire_token_by_auth_code_flow.

is_pop_supported

Restituisce True se il client supporta il token di accesso proof-of-possession.

is_pop_supported()

remove_account

Disconnettersi e dimenticarmi dalla cache dei token

remove_account(account)

Parametri

Nome Descrizione
account
Necessario

Attributi

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'