Azure AD B2C: informazioni di riferimento sui tokenAzure AD B2C: Token reference

Nota

I criteri personalizzati sono disponibili in anteprima pubblica.Custom policies are in public preview.

I criteri personalizzati sono stati progettati principalmente per fare fronte a scenari complessi.Custom policies are designed primarily to address complex scenarios. Per la maggior parte degli scenari è consigliabile usare i criteri predefiniti di Azure Active Directory B2C.For most scenarios, we recommend that you use Azure Active Directory B2C built-in policies. I criteri predefiniti sono più facili da impostare per la configurazione.Built-in policies are easier to set up for your configuration.

Azure Active Directory B2C (Azure AD B2C) rilascia tipi diversi di token di sicurezza durante l'elaborazione di ogni flusso di autenticazione.Azure Active Directory B2C (Azure AD B2C) emits several types of security tokens as it processes each authentication flow. Questo documento descrive il formato, le caratteristiche di sicurezza e i contenuti di ogni tipo di token.This document describes the format, security characteristics, and contents of each type of token.

Tipi di tokenTypes of tokens

Azure AD B2C supporta il protocollo di autorizzazione OAuth 2.0, che usa sia token di accesso che token di aggiornamento.Azure AD B2C supports the OAuth 2.0 authorization protocol, which makes use of both access tokens and refresh tokens. L'endpoint supporta inoltre l'autenticazione e l'accesso tramite OpenID Connect, che introduce un terzo tipo di token: il token ID.It also supports authentication and sign-in via OpenID Connect, which introduces a third type of token: the ID token. Ognuno di questi token viene rappresentato come token di connessione.Each of these tokens is represented as a bearer token.

Un token di connessione è un token di sicurezza leggero che consente al "portatore" di accedere a una risorsa protetta.A bearer token is a lightweight security token that grants the "bearer" access to a protected resource. Per "portatore" si intende qualsiasi parte che possa presentare il token.The bearer is any party that can present the token. Per poter ricevere un token di connessione, Azure AD B2C deve prima autenticare una parte.Azure AD B2C must first authenticate a party before it can receive a bearer token. Se non vengono adottate le misure necessarie per proteggere il token durante la trasmissione e l'archiviazione, potrebbe essere intercettato e usato da parti non autorizzate.But if the required steps are not taken to secure the token in transmission and storage, it can be intercepted and used by an unintended party. Alcuni token di sicurezza hanno un meccanismo predefinito che ne impedisce l'uso da parti non autorizzate, ma i token di connessione non presentano questo meccanismo.Some security tokens have a built-in mechanism for preventing unauthorized parties from using them, but bearer tokens do not have this mechanism. Devono essere trasportati usando un canale protetto, ad esempio il protocollo Transport Layer Security (HTTPS).They must be transported in a secure channel, such as transport layer security (HTTPS).

Se un token di connessione viene trasmesso al di fuori di un canale protetto, un utente malintenzionato potrebbe usare un attacco man-in-the-middle per acquisire il token e usarlo per l'accesso non autorizzato a una risorsa protetta.If a bearer token is transmitted outside a secure channel, a malicious party can use a man-in-the-middle attack to acquire the token and use it to gain unauthorized access to a protected resource. Gli stessi principi di sicurezza si applicano quando i token di connessione vengono archiviati o memorizzati nella cache per un uso futuro.The same security principles apply when bearer tokens are stored or cached for later use. Assicurarsi sempre che l'app trasmetta e archivi i token di connessione in modo sicuro.Always ensure that your app transmits and stores bearer tokens in a secure manner.

Per altre considerazioni sulla sicurezza dei token di connessione, vedere la RFC 6750 Section 5.For additional security considerations on bearer tokens, see RFC 6750 Section 5.

Molti dei token rilasciati da Azure AD B2C vengono implementati come token Web JSON (JWT).Many of the tokens that Azure AD B2C issues are implemented as JSON web tokens (JWTs). Un token JWT è un modo compatto e indipendente dall'URL di trasferimento delle informazioni tra due parti.A JWT is a compact, URL-safe means of transferring information between two parties. I token JWT contengono informazioni note come attestazioni.JWTs contain information known as claims. Si tratta di asserzioni di informazioni relative alla connessione e all'oggetto del token.These are assertions of information about the bearer and the subject of the token. Le attestazioni nei token JWT sono oggetti JSON codificati e serializzati per la trasmissione.The claims in JWTs are JSON objects that are encoded and serialized for transmission. I token JWT rilasciati da Azure AD B2C sono firmati, ma non crittografati, è quindi possibile esaminarne facilmente i contenuti per il debug.Because the JWTs issued by Azure AD B2C are signed but not encrypted, you can easily inspect the contents of a JWT to debug it. Sono disponibili vari strumenti adatti a questo scopo, ad esempio jwt.ms.Several tools are available that can do this, including jwt.ms. Per altre informazioni sui token JWT, vedere le specifiche dei token JWT.For more information about JWTs, refer to JWT specifications.

Token IDID tokens

I token ID sono un tipo di token di sicurezza che l'app riceve dagli endpoint /authorize e /token di Azure AD B2C.An ID token is a form of security token that your app receives from the Azure AD B2C /authorize and /token endpoints. Vengono rappresentati come token JWTe contengono attestazioni che è possibile usare per l'identificazione degli utenti nell'app.ID tokens are represented as JWTs, and they contain claims that you can use to identify users in your app. Quando i token ID vengono acquisiti dall'endpoint /authorize, viene usato il flusso implicito, a cui spesso si ricorre per consentire l'accesso degli utenti alle applicazioni Web basate su JavaScript.When ID tokens are acquired from the /authorize endpoint, they are done so using the implicit flow, which is often used for users signing into to javascript based web applications. Quando invece vengono acquisiti dall'endpoint /token, viene usato il flusso di codice riservato, che mantiene il token nascosto al browser.When ID tokens are acquired from the /token endpoint, they are done so using the confidential code flow, which keeps the token hidden from the browser. In questo modo, il token può essere inviato in totale sicurezza in richieste HTTP per la comunicazione tra due componenti della stessa applicazione o dello stesso servizio.This allows the token to be securely sent in HTTP requests for communication between two components of the same application or service. Le attestazioni nei token ID possono essere usate in base alle esigenze.You can use the claims in an ID token as you see fit. Vengono comunemente usate per visualizzare informazioni sull'account o per prendere decisioni relative al controllo di accesso in un'app.They are commonly used to display account information or to make access control decisions in an app.

Attualmente i token ID sono firmati, ma non crittografati.ID tokens are signed, but they are not currently encrypted. Quando l'API o l'app riceve un token ID, deve convalidare la firma per dimostrare l'autenticità del token.When your app or API receives an ID token, it must validate the signature to prove that the token is authentic. Per dimostrarne la validità, l'API o l'app deve anche convalidare alcune delle attestazioni del token.Your app or API must also validate a few claims in the token to prove that it is valid. A seconda dei requisiti dello scenario, le attestazioni convalidate da un'app possono variare, ma l'app deve eseguire alcune operazioni comuni di convalida delle attestazioni in ogni scenario.Depending on the scenario requirements, the claims validated by an app can vary, but your app must perform some common claim validations in every scenario.

Token ID di esempioSample ID token

// Line breaks for display purposes only

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IklkVG9rZW5TaWduaW5nS2V5Q29udGFpbmVyIn0.
eyJleHAiOjE0NDIzNjAwMzQsIm5iZiI6MTQ0MjM1NjQzNCwidmVyIjoiMS4wIiwiaXNzIjoiaHR0cHM6Ly9s
b2dpbi5taWNyb3NvZnRvbmxpbmUuY29tLzc3NTUyN2ZmLTlhMzctNDMwNy04YjNkLWNjMzExZjU4ZDkyNS92
Mi4wLyIsImFjciI6ImIyY18xX3NpZ25faW5fc3RvY2siLCJzdWIiOiJOb3Qgc3VwcG9ydGVkIGN1cnJlbnRs
eS4gVXNlIG9pZCBjbGFpbS4iLCJhdWQiOiI5MGMwZmU2My1iY2YyLTQ0ZDUtOGZiNy1iOGJiYzBiMjlkYzYi
LCJpYXQiOjE0NDIzNTY0MzQsImF1dGhfdGltZSI6MTQ0MjM1NjQzNCwiaWRwIjoiZmFjZWJvb2suY29tIn0.
h-uiKcrT882pSKUtWCpj-_3b3vPs3bOWsESAhPMrL-iIIacKc6_uZrWxaWvIYkLra5czBcGKWrYwrAC8ZvQe
DJWZ50WXQrZYODEW1OUwzaD_I1f1HE0c2uvaWdGXBpDEVdsD3ExKaFlKGjFR2V7F-fPThkVDdKmkUDQX3bVc
yyj2V2nlCQ9jd7aGnokTPfLfpOjuIrTsAdPcGpe5hfSEuwYDmqOJjGs9Jp1f-eSNEiCDQOaTBSvr479L5ptP
XWeQZyX2SypN05Rjr05bjZh3j70ZUimiocfJzjibeoDCaQTz907yAg91WYuFOrQxb-5BaUoR7K-O7vxr2M-_
CQhoFA

Token di accessoAccess tokens

Un token di accesso è anche un tipo di token di sicurezza che l'app riceve dagli endpoint /authorize e /token di Azure AD B2C.An access token is also a form of security token that your app receives from the Azure AD B2C /authorize and /token endpoints. I token di accesso vengono rappresentati come token JWT e contengono attestazioni che è possibile usare per l'identificazione delle autorizzazioni concesse alle API.Access tokens are also represented as JWTs, and they contain claims that you can use to identify the granted permissions to your APIs. Attualmente i token di accesso sono firmati, ma non crittografati.Access tokens are signed, but they are not currently encrypted. Per fornire l'accesso alle API e ai server delle risorse, è necessario usare i token di accesso.Access tokens should be used to provide access to APIs and resource servers. Altre informazioni su come usare i token di accesso.Learn more about how to use access tokens.

Quando l'API riceve un token di accesso, deve convalidare la firma per dimostrare l'autenticità del token.When your API receives an access token, it must validate the signature to prove that the token is authentic. Per dimostrarne la validità, l'API deve anche convalidare alcune attestazioni del token.Your API must also validate a few claims in the token to prove that it is valid. A seconda dei requisiti dello scenario, le attestazioni convalidate da un'app possono variare, ma l'app deve eseguire alcune operazioni comuni di convalida delle attestazioni in ogni scenario.Depending on the scenario requirements, the claims validated by an app can vary, but your app must perform some common claim validations in every scenario.

Attestazioni nei token di accesso e IDClaims in ID and access tokens

Azure AD B2C consente un controllo con granularità fine sul contenuto dei token.When you use Azure AD B2C, you have fine-grained control over the content of your tokens. È possibile configurare criteri per inviare un set di dati utente specifici in attestazioni necessarie per il funzionamento dell'app.You can configure policies to send certain sets of user data in claims that your app requires for its operations. Le attestazioni possono includere proprietà standard, ad esempio le proprietà displayName e emailAddress relative all'utente.These claims can include standard properties such as the user's displayName and emailAddress. Possono includere anche attributi utente personalizzati che è possibile definire nella directory B2C.They can also include custom user attributes that you can define in your B2C directory. Ogni token ID e di accesso ricevuto contiene un determinato set di attestazioni relative alla sicurezza.Every ID and access token that you receive contains a certain set of security-related claims. Le applicazioni possono usare queste attestazioni per autenticare in modo sicuro gli utenti e le richieste.Your applications can use these claims to securely authenticate users and requests.

Si noti che le attestazioni nei token ID non vengono restituite in un ordine particolare.Note that the claims in ID tokens are not returned in any particular order. Si noti anche che possono essere introdotte nuove attestazioni nei token ID in qualsiasi momento.In addition, new claims can be introduced in ID tokens at any time. L'introduzione delle nuove attestazioni non deve interrompere il funzionamento dell'app.Your app should not break as new claims are introduced. Di seguito è riportato un elenco delle attestazioni previste in ogni token ID e di accesso rilasciato da Azure AD B2C.Here are the claims that you expect to exist in ID and access tokens issued by Azure AD B2C. Eventuali attestazioni aggiuntive sono determinate dai criteri.Any additional claims are determined by policies. A scopo di esercitazione, provare a verificare le attestazioni nel token ID di esempio incollandole in jwt.ms.For practice, try inspecting the claims in the sample ID token by pasting it into jwt.ms. Per informazioni più dettagliate, vedere la specifica di OpenID Connect.Further details can be found in the OpenID Connect specification.

NOMEName AttestazioneClaim Valore di esempioExample value DESCRIZIONEDescription
AudienceAudience aud 90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 Identifica il destinatario del token.An audience claim identifies the intended recipient of the token. Per Azure AD B2C il destinatario è l'ID applicazione assegnato all'app nel portale di registrazione delle app.For Azure AD B2C, the audience is your app's application ID, as assigned to your app in the app registration portal. L'app deve convalidare questo valore e rifiutare il token, se il valore non corrisponde.Your app should validate this value and reject the token if it does not match.
IssuerIssuer iss https://login.microsoftonline.com/775527ff-9a37-4307-8b3d-cc311f58d925/v2.0/ Identifica il servizio token di sicurezza (STS) che costruisce e restituisce il tokenThis claim identifies the security token service (STS) that constructs and returns the token. e identifica la directory di Azure AD in cui è stato autenticato l'utente.It also identifies the Azure AD directory in which the user was authenticated. L'app deve convalidare l'attestazione Autorità di certificazione per assicurarsi che il token sia stato fornito dall'endpoint di Azure Active Directory 2.0.Your app should validate the issuer claim to ensure that the token came from the Azure Active Directory v2.0 endpoint.
Ora di emissioneIssued at iat 1438535543 Indica l'ora in cui il token è stato rilasciato, rappresentata come valore epoch time.This claim is the time at which the token was issued, represented in epoch time.
ScadenzaExpiration time exp 1438539443 Indica l'ora di scadenza del token, rappresentata come valore epoch time.The expiration time claim is the time at which the token becomes invalid, represented in epoch time. L'app deve usare questa attestazione per verificare la validità della durata del token.Your app should use this claim to verify the validity of the token lifetime.
Non primaNot before nbf 1438535543 Indica l'ora di inizio della validità del token, rappresentata come valore epoch time.This claim is the time at which the token becomes valid, represented in epoch time. Equivale in genere all'ora di rilascio del token.This is usually the same as the time the token was issued. L'app deve usare questa attestazione per verificare la validità della durata del token.Your app should use this claim to verify the validity of the token lifetime.
VersionVersion ver 1.0 Versione del token ID, definita da Azure AD.This is the version of the ID token, as defined by Azure AD.
Hash del codiceCode hash c_hash SGCPtt01wxwfgnYZy2VJtQ L'hash del codice è incluso in un token ID solo quando quest'ultimo viene rilasciato insieme a un codice di autorizzazione di OAuth 2.0.A code hash is included in an ID token only when the token is issued together with an OAuth 2.0 authorization code. Può essere usato per convalidare l'autenticità di un codice di autorizzazione.A code hash can be used to validate the authenticity of an authorization code. Per informazioni dettagliate su come eseguire la convalida, vedere la specifica di OpenID Connect .For more details on how to perform this validation, see the OpenID Connect specification.
Hash del token di accessoAccess token hash at_hash SGCPtt01wxwfgnYZy2VJtQ L'hash del token di accesso è incluso in un token ID solo quando quest'ultimo viene rilasciato insieme a un token di accesso di OAuth 2.0.An access token hash is included in an ID token only when the token is issued together with an OAuth 2.0 access token. Può essere usato per convalidare l'autenticità di un token di accesso.An access token hash can be used to validate the authenticity of an access token. Per informazioni dettagliate su come eseguire la convalida, vedere la specifica di OpenID ConnectFor more details on how to perform this validation, see the OpenID Connect specification
NonceNonce nonce 12345 Strategia per ridurre gli attacchi di riproduzione dei token.A nonce is a strategy used to mitigate token replay attacks. L'app può specificare un'attestazione Nonce in una richiesta di autorizzazione usando il parametro di query nonce .Your app can specify a nonce in an authorization request by using the nonce query parameter. Il valore specificato nella richiesta verrà rilasciato senza modifica nell'attestazione nonce solo di un token ID.The value you provide in the request will be emitted unmodified in the nonce claim of an ID token only. In questo modo l'app può verificare il valore rispetto al valore specificato nella richiesta che associa la sessione dell'app a un determinato token ID.This allows your app to verify the value against the value it specified on the request, which associates the app's session with a given ID token. L'app deve eseguire la convalida durante il processo di convalida del token ID.Your app should perform this validation during the ID token validation process.
OggettoSubject sub 884408e1-2918-4cz0-b12d-3aa027d7563b Indica l'entità su cui il token rilascia informazioni, ad esempio l'utente di un'app.This is the principal about which the token asserts information, such as the user of an app. Questo valore non è modificabile e non può essere riassegnato o riutilizzato.This value is immutable and cannot be reassigned or reused. Può essere usato per eseguire controlli di autorizzazione in modo sicuro, ad esempio quando il token viene usato per accedere a una risorsa.It can be used to perform authorization checks safely, such as when the token is used to access a resource. Per impostazione predefinita, l'attestazione dell'oggetto viene popolata con l'ID oggetto dell'utente nella directory.By default, the subject claim is populated with the object ID of the user in the directory. Per maggiori informazioni, vedere Azure Active Directory B2C: Configurazione di token, sessione e accesso Single Sign-On.To learn more, see Azure Active Directory B2C: Token, session, and single sign-on configuration.
Riferimento alla classe contesto di autenticazioneAuthentication context class reference acr Non applicabileNot applicable Attualmente non in uso, tranne nel caso di criteri meno recenti.Not used currently, except in the case of older policies. Per maggiori informazioni, vedere Azure Active Directory B2C: Configurazione di token, sessione e accesso Single Sign-On.To learn more, see Azure Active Directory B2C: Token, session, and single sign-on configuration.
Criteri del framework di attendibilitàTrust framework policy tfp b2c_1_sign_in Nome del criterio usato per acquisire il token ID.This is the name of the policy that was used to acquire the ID token.
Ora di autenticazioneAuthentication time auth_time 1438535543 Ora in cui l'utente ha immesso le credenziali l'ultima volta, rappresentata come valore epoch time.This claim is the time at which a user last entered credentials, represented in epoch time.

Token di aggiornamentoRefresh tokens

I token di aggiornamento sono token di sicurezza che l'app può usare per acquisire nuovi token ID e token di accesso in un flusso di OAuth 2.0.Refresh tokens are security tokens that your app can use to acquire new ID tokens and access tokens in an OAuth 2.0 flow. Consentono all'app di ottenere l'accesso a lungo termine alle risorse per conto degli utenti senza richiedere l'interazione degli utenti.They provide your app with long-term access to resources on behalf of users without requiring interaction with those users.

Per ricevere un token di aggiornamento in una risposta del token, l'app deve richiedere l'ambito offline_acesss .To receive a refresh token in a token response, your app must request the offline_acesss scope. Per ulteriori informazioni sull’ambito offline_access , fare riferimento al riferimento al protocollo di Azure AD B2C.To learn more about the offline_access scope, refer to the Azure AD B2C protocol reference.

I token di aggiornamento sono e saranno sempre, completamente opachi per l'app.Refresh tokens are, and will always be, completely opaque to your app. Vengono rilasciati da Azure AD e possono essere controllati e interpretati solo da Azure AD.They are issued by Azure AD and can be inspected and interpreted only by Azure AD. Hanno lunga durata, ma l'app non deve essere scritta in base a una durata specifica prevista per il token di aggiornamento.They are long-lived, but your app should not be written with the expectation that a refresh token will last for a specific period of time. I token di aggiornamento possono essere annullati in qualsiasi momento per vari motivi.Refresh tokens can be invalidated at any moment for a variety of reasons. L'unico modo per l'app di sapere se un token di aggiornamento è valido è tentare di riscattarlo mediante una richiesta di token al Azure AD.The only way for your app to know if a refresh token is valid is to attempt to redeem it by making a token request to Azure AD.

Quando si riscatta un token di aggiornamento per un nuovo token, se all'app è stata concessa l'autorizzazione per l'ambito offline_access, si riceve un nuovo token di aggiornamento nella risposta del token.When you redeem a refresh token for a new token (and if your app has been granted the offline_access scope), you will receive a new refresh token in the token response. È consigliabile salvare il token di aggiornamento appena rilasciato,You should save the newly issued refresh token. che deve sostituire il token di aggiornamento usato in precedenza nella richiesta.It should replace the refresh token you previously used in the request. In questo modo, il token di aggiornamento rimarrà valido il più a lungo possibile.This helps guarantee that your refresh tokens remain valid for as long as possible.

Convalida dei tokenToken validation

Per convalidare un token, l'app deve verificare sia la firma che le attestazioni del token stesso.To validate a token, your app should check both the signature and claims of the token.

Sono disponibili molte librerie open source per la convalida dei token JWT, a seconda del linguaggio preferito.Many open source libraries are available for validating JWTs, depending on your preferred language. È consigliabile prendere in esame tali opzioni anziché implementare una logica di convalida personalizzata.We recommend that you explore those options rather than implement your own validation logic. Le informazioni contenute in questa guida permettono di imparare a usare correttamente tali librerie.The information in this guide can help you learn how to properly use those libraries.

convalidare la firmaValidate the signature

Un token JWT contiene tre segmenti separati dal carattere . .A JWT contains three segments, separated by the . character. Il primo segmento costituisce l'intestazione, il secondo è il corpo, il terzo la firma.The first segment is the header, the second is the body, and the third is the signature. Il segmento di firma può essere usato per convalidare l'autenticità del token, in modo che possa essere considerato attendibile dall'app.The signature segment can be used to validate the authenticity of the token so that it can be trusted by your app.

I token Azure AD B2C vengono firmati usando algoritmi di crittografia asimmetrica standard del settore, come RSA 256.Azure AD B2C tokens are signed by using industry-standard asymmetric encryption algorithms, such as RSA 256. L'intestazione del token contiene informazioni sulla chiave e sul metodo di crittografia usati per firmare il token:The header of the token contains information about the key and encryption method used to sign the token:

{
        "typ": "JWT",
        "alg": "RS256",
        "kid": "GvnPApfWMdLRi8PDmisFn7bprKg"
}

L'attestazione alg indica l'algoritmo usato per firmare il token.The alg claim indicates the algorithm that was used to sign the token. L'attestazione kid indica la chiave pubblica specifica usata per firmare il token.The kid claim indicates the particular public key that was used to sign the token.

In qualsiasi momento Azure AD può firmare un token usando un determinato set di coppie di chiavi pubblica/privata.At any given time, Azure AD can sign a token by using any one of a certain set of public-private key pairs. Azure AD ruota il set di chiavi su base periodica, quindi l'app deve essere scritta in modo da gestire automaticamente le modifiche delle chiavi.Azure AD rotates the possible set of keys periodically, so your app should be written to handle those key changes automatically. Una frequenza ragionevole per la ricerca di aggiornamenti per le chiavi pubbliche usate da Azure AD è di circa 24 ore.A reasonable frequency to check for updates to the public keys used by Azure AD is every 24 hours.

Azure AD B2C include un endpoint dei metadati di OpenID Connect.Azure AD B2C has an OpenID Connect metadata endpoint. Questo consente alle app di recuperare informazioni su Azure AD B2C in fase di esecuzione.This allows apps to fetch information about Azure AD B2C at runtime. Queste informazioni includono endpoint, contenuti del token e chiavi per la firma dei token.This information includes endpoints, token contents, and token signing keys. La directory B2C contiene un documento metadati JSON per ogni criterio.Your B2C directory contains a JSON metadata document for each policy. Il documento di metadati dei criteri b2c_1_sign_in in fabrikamb2c.onmicrosoft.com si trova ad esempio in:For example, the metadata document for the b2c_1_sign_in policy in fabrikamb2c.onmicrosoft.com is located at:

https://login.microsoftonline.com/fabrikamb2c.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=b2c_1_sign_in

fabrikamb2c.onmicrosoft.com è la directory B2C usata per autenticare l'utente e b2c_1_sign_in sono i criteri usati per acquisire il token.fabrikamb2c.onmicrosoft.com is the B2C directory used to authenticate the user, and b2c_1_sign_in is the policy used to acquire the token. Per determinare quale criterio è stato usato per la firma di un token e la posizione da cui recuperare i metadati, sono disponibili due opzioni.To determine which policy was used to sign a token (and where to go to fetch the metadata), you have two options. Prima di tutto, il nome del criterio è incluso nell'attestazione acr del token.First, the policy name is included in the acr claim in the token. È possibile analizzare le attestazioni all'esterno del corpo del token JWT decodificando il corpo in base 64 e deserializzando la stringa JSON risultante.You can parse claims out of the body of the JWT by base-64 decoding the body and deserializing the JSON string that results. L'attestazione acr è il nome del criterio usato per rilasciare il token.The acr claim will be the name of the policy that was used to issue the token. L'altra opzione consiste nel codificare i criteri nel valore del parametro state quando si rilascia la richiesta, per poi decodificarlo e determinare quali criteri sono stati utilizzati.Your other option is to encode the policy in the value of the state parameter when you issue the request, and then decode it to determine which policy was used. Entrambi i metodi sono validi.Either method is valid.

Il documento metadati è un oggetto JSON che contiene diverse informazioni utili,The metadata document is a JSON object that contains several useful pieces of information. come ad esempio il percorso degli endpoint necessari per eseguire l'autenticazione OpenID Connect.These include the location of the endpoints required to perform OpenID Connect authentication. Include anche un oggetto jwks_uri che fornisce la posizione del set di chiavi pubbliche usate per firmare i token.They also include jwks_uri, which gives the location of the set of public keys that are used to sign tokens. Tale posizione è indicata di seguito, ma è consigliabile recuperarla in modo dinamico usando il documento di metadati e analizzando l'oggetto jwks_uri:That location is provided here, but it is best to fetch the location dynamically by using the metadata document and parsing out jwks_uri:

https://login.microsoftonline.com/fabrikamb2c.onmicrosoft.com/discovery/v2.0/keys?p=b2c_1_sign_in

Il documento JSON in questo URL contiene tutte le informazioni sulla chiave pubblica usata in un determinato momento.The JSON document located at this URL contains all the public key information in use at a particular moment. L'app può usare l'attestazione kid nell'intestazione del token JWT per selezionare la chiave pubblica nel documento JSON usata per firmare un determinato token.Your app can use the kid claim in the JWT header to select the public key in the JSON document that is used to sign a particular token. Può quindi eseguire la convalida della firma usando la chiave pubblica corretta e l'algoritmo indicato.It can then perform signature validation by using the correct public key and the indicated algorithm.

La descrizione della convalida della firma non rientra nelle finalità di questo documento.A description of how to perform signature validation is outside the scope of this document. A tale scopo è possibile consultare le varie librerie open source disponibili.Many open source libraries are available to help you with this if you need it.

Convalidare le attestazioniValidate the claims

Quando l'app o l'API riceve un token ID, deve eseguire anche diversi controlli in base alle attestazioni nel token ID.When your app or API receives an ID token, it should also perform several checks against the claims in the ID token. Sono incluse, ad esempio:These include, but are not limited to:

  • Attestazione Destinatari : verifica che il token ID fosse destinato all'app.The audience claim: This verifies that the ID token was intended to be given to your app.
  • Attestazioni not before (Non prima) e expiration time (Scadenza): verificano che il token ID non sia scaduto.The not before and expiration time claims: These verify that the ID token has not expired.
  • Attestazione Autorità di certificazione : verifica che il token sia stato rilasciato all'app da Azure AD.The issuer claim: This verifies that the token was issued to your app by Azure AD.
  • Attestazione Nonce: strategia per ridurre gli attacchi di riproduzione dei token.The nonce: This is a strategy for token replay attack mitigation.

Per un elenco completo delle convalide che l'app deve eseguire, vedere le specifiche di OpenID Connect.For a full list of validations your app should perform, refer to the OpenID Connect specification. Per informazioni dettagliate sui valori previsti per tali attestazioni, vedere la sezione Tokenprecedente.Details of the expected values for these claims are included in the preceding token section.

Durata dei tokenToken lifetimes

A scopo di approfondimento viene riportata di seguito la durata dei vari token.The following token lifetimes are provided to further your knowledge. Queste informazioni possono risultare utili durante lo sviluppo e il debug delle app.They can help you when you develop and debug apps. Si noti che le app non devono essere scritte in base a una durata specifica prevista come costante.Note that your apps should not be written to expect any of these lifetimes to remain constant. La durata dei token può variare.They can and will change. Al seguente link sono disponibili maggiori informazioni sulla personalizzazione della durata dei token in Azure AD B2C.Read more about the customization of token lifetimes in Azure AD B2C.

tokenToken DurataLifetime DESCRIZIONEDescription
Token IDID tokens Un'oraOne hour I token ID sono in genere validi per un'ora.ID tokens are typically valid for an hour. L'app Web può usare tale durata per mantenere le relative sessioni con gli utenti (scelta consigliati).Your web app can use this lifetime to maintain its own sessions with users (recommended). È anche possibile scegliere una durata di sessione diversa.You can also choose a different session lifetime. Se l'app deve ottenere un nuovo token ID, deve semplicemente inviare una nuova richiesta di accesso ad Azure AD.If your app needs to get a new ID token, it simply needs to make a new sign-in request to Azure AD. Se l'utente ha una sessione del browser valida con Azure AD, può non essere necessario immettere nuovamente le credenziali.If a user has a valid browser session with Azure AD, that user might not be required to enter credentials again.
Token di aggiornamentoRefresh tokens Fino a 14 giorniUp to 14 days Un singolo token di aggiornamento è valido per un periodo massimo di 14 giorni.A single refresh token is valid for a maximum of 14 days. Tuttavia, un token di aggiornamento potrebbe non essere più valido in qualsiasi momento per diversi motivi.However, a refresh token can become invalid at any time for a number of reasons. L'app deve continuare a provare a usare un token di aggiornamento fino a quando la richiesta non ha esito negativo o l'app non sostituisce il token di aggiornamento con uno nuovo.Your app should continue to try to use a refresh token until the request fails, or until your app replaces the refresh token with a new one. Se sono trascorsi 90 giorni dall'ultima volta in cui l'utente ha immesso le credenziali, un token di aggiornamento può non essere più valido.A refresh token can also become invalid if 90 days have passed since the user last entered credentials.
Codici di autorizzazioneAuthorization codes Cinque minutiFive minutes I codici di autorizzazione hanno intenzionalmente una breve durata.Authorization codes are intentionally short-lived. Alla ricezione devono essere riscattati immediatamente con token di accesso, token ID o token di aggiornamento.They should be redeemed immediately for access tokens, ID tokens, or refresh tokens when they are received.