Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
L'endpoint dell'emittente del token
L'endpoint del token OAuth 2.0 /oauth2/token emette token web JSON (JWT)
L'endpoint del token restituisce un'intestazione di risposta. Access-Control-Allow-Origin: * È possibile chiamare l'endpoint del token cross-origin da un'applicazione basata su browser. Ad esempio, puoi completare la concessione di un codice di autorizzazione con Proof Key for Code Exchange (PKCE) di un client pubblico. Amazon Cognito non supporta politiche di origine personalizzate per la condivisione di risorse tra origini (CORS) su questo endpoint. Per ulteriori informazioni, consulta la sezione sulle politiche CORS di. Accesso gestito dal pool di utenti
Il server di autorizzazione OAuth 2.0 del pool di utenti invia token web JSON (JWT) dall'endpoint del token ai seguenti tipi di sessioni:
-
Gli utenti che hanno completato una richiesta di concessione del codice di autorizzazione. Il riscatto riuscito di un codice restituisce i token ID, di accesso e di aggiornamento.
-
Machine-to-machine sessioni (M2M) che hanno completato la concessione delle credenziali del cliente. L'autorizzazione riuscita con il segreto del client restituisce un token di accesso.
-
Utenti che hanno effettuato l'accesso in precedenza e hanno ricevuto token di aggiornamento. L'autenticazione con token di aggiornamento restituisce nuovi ID e token di accesso.
Nota
Gli utenti che accedono con un codice di autorizzazione concesso nell'accesso gestito o tramite federazione possono sempre aggiornare i propri token dall'endpoint del token. Gli utenti che accedono con le operazioni API
InitiateAutheAdminInitiateAuthpossono aggiornare i propri token con l'endpoint del token quando i dispositivi Utilizzo dei dispositivi utente nel pool di utenti memorizzati non sono attivi nel pool di utenti. Se i dispositivi ricordati sono attivi, aggiorna i token con l'operazione di aggiornamento dei token API o SDK pertinente per il client dell'app.
L'endpoint token diventa disponibile pubblicamente quando si aggiunge un dominio al pool di utenti. Accetta le richieste POST HTTP. Per la sicurezza delle applicazioni, utilizza PKCE con gli eventi di accesso al codice di autorizzazione. PKCE verifica che l'utente che trasmette un codice di autorizzazione sia lo stesso utente che ha effettuato l'autenticazione. Per ulteriori informazioni su PKCE, vedere IETF RFC 7636.
Per saperne di più sul pool di utenti, sui client delle app e sui relativi tipi di concessione, sui segreti dei client, sugli ambiti consentiti e sugli ID client, visita. Impostazioni specifiche dell'applicazione con client di app Puoi saperne di più sull'autorizzazione M2M, sulla concessione delle credenziali dei client e sull'autorizzazione con gli ambiti dei token di accesso all'indirizzo. Ambiti, M2M e server di risorse
Per recuperare informazioni su un utente dal suo token di accesso, passale alla tua Endpoint UserInfo o a una richiesta API. GetUser Il token di accesso deve contenere gli ambiti appropriati per queste richieste,
Formatta una richiesta POST sull'endpoint del token
L'endpoint /oauth2/token supporta solo HTTPS POST. Questo endpoint non è interattivo con l'utente. Gestisci le richieste di token con una libreria OpenID Connect (OIDC) nella tua applicazione.
L'endpoint token supporta l'autenticazione client_secret_basic e client_secret_post. Per ulteriori informazioni sulla specifica OIDC, consulta Client Authentication. https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication
Parametri della richiesta nell'intestazione
Puoi passare i seguenti parametri nell'intestazione della richiesta all'endpoint del token.
Authorization-
Se il client ha emesso un segreto, dovrà trasmettere i suoi
client_ideclient_secretnell'intestazione dell'autorizzazione come autorizzazione HTTPclient_secret_basic. Puoi inoltre includereclient_ideclient_secretnel corpo della richiesta come autorizzazioneclient_secret_post.La stringa di intestazione di autorizzazione è Base
Base64Encode(client_id:client_secret). L'esempio seguente è un'intestazione di autorizzazione per l'app clientdjc98u3jiedmi283eu928con client secretabcdef01234567890, che utilizza la Base64-encoded versione della stringa:djc98u3jiedmi283eu928:abcdef01234567890Authorization: Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw Content-Type-
Imposta il valore di questo parametro su
'application/x-www-form-urlencoded'.
Parametri della richiesta nel corpo
Di seguito sono riportati i parametri che è possibile richiedere in x-www-form-urlencoded formato nel corpo della richiesta all'endpoint del token.
grant_type-
Campo obbligatorio.
Il tipo di concessione OIDC che desideri richiedere.
Deve essere
authorization_codeorefresh_tokenoclient_credentials. Puoi richiedere un token di accesso per un ambito personalizzato dall'endpoint del token nelle seguenti condizioni:-
Hai abilitato l'ambito richiesto nella configurazione del client dell'app.
-
Hai configurato il client dell'app con un segreto client.
-
Attivi la concessione delle credenziali del client nel client dell'app.
Nota
L'endpoint del token restituisce un token di aggiornamento solo quando lo è.
grant_typeauthorization_code -
client_id-
Facoltativo. Non richiesto quando si fornisce l'ID client dell'app nell'
Authorizationintestazione.L'ID di un client app nel tuo pool di utenti. Specifica lo stesso client dell'app che ha autenticato l'utente.
È necessario fornire questo parametro se il client è pubblico e non ha un segreto o non è
client_secret_postautorizzato.client_secret client_secret-
Facoltativo. Non richiesto quando fornisci il segreto del client nell'
Authorizationintestazione e quando il client dell'app non ha un segreto.Il segreto del client dell'app, se il client dell'app ne ha uno, per
client_secret_postl'autorizzazione. scope-
Facoltativo.
Può essere una combinazione di qualsiasi ambito associato al client dell'app. Amazon Cognito ignora gli ambiti della richiesta che non sono consentiti per il client dell'app richiesto. Se non fornisci questo parametro di richiesta, il server di autorizzazione restituisce un'
scopeattestazione del token di accesso con tutti gli ambiti di autorizzazione che hai abilitato nella configurazione del client dell'app. Puoi richiedere uno qualsiasi degli ambiti consentiti per il client dell'app richiesto: ambiti standard, ambiti personalizzati dai server di risorse e ambito self-service utente.aws.cognito.signin.user.admin redirect_uri-
Facoltativo. Non richiesto per la concessione delle credenziali del cliente.
Deve essere lo stesso
redirect_uriutilizzato per ottenereauthorization_codein/oauth2/authorize.È necessario fornire questo parametro se lo
grant_typeèauthorization_code. refresh_token-
Facoltativo. Utilizzato solo quando l'utente dispone già di un token di aggiornamento e desidera ottenere un nuovo ID e token di accesso.
Per generare nuovi token di accesso e ID per la sessione di un utente, imposta il valore di su un token
refresh_tokendi aggiornamento valido emesso dal client dell'app richiesto.Restituisce un nuovo token di aggiornamento con nuovi ID e token di accesso quando la rotazione del token di aggiornamento è attiva, altrimenti restituisce solo ID e token di accesso. Se il token di accesso originale era associato a una risorsa API, il nuovo token di accesso mantiene l'URL dell'API richiesto nel claim.
aud code-
Facoltativo. Richiesto solo nelle concessioni del codice di autorizzazione.
Il codice di autorizzazione derivante da una concessione del codice di autorizzazione. È necessario fornire questo parametro se la richiesta di autorizzazione include un valore
grant_typediauthorization_code. aws_client_metadata-
Facoltativo.
Informazioni da passare ai flussi di autorizzazione da macchina Trigger Lambda di pre-generazione del token a macchina (M2M). L'applicazione può raccogliere informazioni contestuali sulla sessione e trasmetterle in questo parametro. Quando lo passi
aws_client_metadatain formato URL-encoded JSON, Amazon Cognito lo include nell'evento di input della funzione Lambda di attivazione. La versione precedente all'evento di attivazione del token o la versione globale del trigger Lambda deve essere configurata per la versione tre o successiva. Sebbene Amazon Cognito accetti richieste a questo endpoint nei flussi M2M di codice di autorizzazione e credenziali del cliente, il pool di utenti passaaws_client_metadataal trigger precedente alla generazione del token solo dalle richieste di credenziali del client. code_verifier-
Opzionale. Obbligatorio solo se hai fornito alcuni
code_challengeparametri nella richiesta dicode_challenge_methodautorizzazione iniziale.Il verificatore di codice generato
code_challengeda cui l'applicazione ha calcolato in una richiesta di concessione del codice di autorizzazione con Utilizzo di PKCE nelle concessioni di codici di autorizzazione PKCE.
Sostituzione di un codice di autorizzazione per i token
La seguente richiesta genera con successo ID, token di accesso e aggiornamento dopo l'autenticazione con una concessione del codice di autorizzazione. La richiesta trasmette il segreto del client nel formato riportato nell'intestazione. client_secret_basic Authorization
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token& Content-Type='application/x-www-form-urlencoded'& Authorization=BasicZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkwgrant_type=authorization_code& client_id=1example23456789& code=AUTHORIZATION_CODE& redirect_uri=com.myclientapp://myclient/redirect
La risposta fornisce all'utente nuovi token ID, di accesso e di aggiornamento, con metadati aggiuntivi.
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJra1example",
"id_token": "eyJra2example",
"refresh_token": "eyJj3example",
"token_type": "Bearer",
"expires_in": 3600
}
Credenziali del cliente con autorizzazione di base
La seguente richiesta da un'applicazione M2M richiede la concessione delle credenziali del client. Poiché le credenziali del client richiedono un segreto client, la richiesta viene autorizzata con un'Authorizationintestazione derivata dall'ID e dal segreto del client dell'app. La richiesta genera un token di accesso con i due ambiti richiesti. La richiesta include anche i metadati del cliente che forniscono IP-address informazioni e un token rilasciato all'utente per conto del quale è stata concessa la concessione. Amazon Cognito trasmette i metadati del client al trigger Lambda precedente alla generazione del token.
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded'& Authorization=BasicZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkwgrant_type=client_credentials& client_id=1example23456789& scope=resourceServerIdentifier1%2Fscope1%20resourceServerIdentifier2%2Fscope2& &aws_client_metadata=%7B%22onBehalfOfToken%22%3A%22eyJra789ghiEXAMPLE%22,%20%22ClientIpAddress%22%3A%22192.0.2.252%22%7D
Amazon Cognito passa il seguente evento di input al trigger Lambda precedente alla generazione del token.
{ version: '3', triggerSource: 'TokenGeneration_ClientCredentials', region: 'us-east-1', userPoolId: 'us-east-1_EXAMPLE', userName: 'ClientCredentials', callerContext: { awsSdkVersion: 'aws-sdk-unknown-unknown', clientId: '1example23456789' }, request: { userAttributes: {}, groupConfiguration: null, scopes: [ 'resourceServerIdentifier1/scope1', 'resourceServerIdentifier2/scope2' ], clientMetadata: { 'onBehalfOfToken': 'eyJra789ghiEXAMPLE', 'ClientIpAddress': '192.0.2.252' } }, response: { claimsAndScopeOverrideDetails: null } }
La risposta restituisce un token di accesso. Le credenziali del client vengono concesse per l'autorizzazione da macchina a macchina (M2M) e restituiscono solo token di accesso.
HTTP/1.1 200 OK Content-Type: application/json { "access_token": "eyJra1example", "token_type": "Bearer", "expires_in":3600}
Credenziali del cliente con autorizzazione POST body
La seguente richiesta di concessione delle credenziali del cliente include il client_secret parametro nel corpo della richiesta e non include un'intestazione. Authorization Questa richiesta utilizza la sintassi di autorizzazione. client_secret_post La richiesta genera un token di accesso con l'ambito richiesto. La richiesta include anche i metadati del cliente che forniscono IP-address informazioni e un token rilasciato all'utente per conto del quale è stata concessa la concessione. Amazon Cognito trasmette i metadati del client al trigger Lambda precedente alla generazione del token.
POST /oauth2/token HTTP/1.1 Content-Type: application/x-www-form-urlencoded X-Amz-Target: AWSCognitoIdentityProviderService.Client credentials request User-Agent:USER_AGENTAccept: / Accept-Encoding: gzip, deflate, br Content-Length: 177 Referer: http://auth.example.com/oauth2/token Host:auth.example.comConnection: keep-alive grant_type=client_credentials& client_id=1example23456789& scope=my_resource_server_identifier%2Fmy_custom_scope&client_secret=9example87654321& aws_client_metadata=%7B%22onBehalfOfToken%22%3A%22eyJra789ghiEXAMPLE%22,%20%22ClientIpAddress%22%3A%22192.0.2.252%22%7D
Amazon Cognito passa il seguente evento di input al trigger Lambda precedente alla generazione del token.
{ version: '3', triggerSource: 'TokenGeneration_ClientCredentials', region: 'us-east-1', userPoolId: 'us-east-1_EXAMPLE', userName: 'ClientCredentials', callerContext: { awsSdkVersion: 'aws-sdk-unknown-unknown', clientId: '1example23456789' }, request: { userAttributes: {}, groupConfiguration: null, scopes: [ 'resourceServerIdentifier1/my_custom_scope' ], clientMetadata: { 'onBehalfOfToken': 'eyJra789ghiEXAMPLE', 'ClientIpAddress': '192.0.2.252' } }, response: { claimsAndScopeOverrideDetails: null } }
La risposta restituisce un token di accesso. Le credenziali del client vengono concesse per l'autorizzazione da macchina a macchina (M2M) e restituiscono solo token di accesso.
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Date: Tue, 05 Dec 2023 16:11:11 GMT x-amz-cognito-request-id: 829f4fe2-a1ee-476e-b834-5cd85c03373b { "access_token": "eyJra12345EXAMPLE", "expires_in":3600, "token_type": "Bearer" }
Concessione del codice di autorizzazione con PKCE
La seguente richiesta di esempio completa una richiesta di autorizzazione inclusa code_challenge_method e i code_challenge parametri in una richiesta di concessione del codice di autorizzazione con PKCE.
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token Content-Type='application/x-www-form-urlencoded'& Authorization=BasicZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkwgrant_type=authorization_code& client_id=1example23456789& code=AUTHORIZATION_CODE& code_verifier=CODE_VERIFIER& redirect_uri=com.myclientapp://myclient/redirect
La risposta restituisce l'ID, l'accesso e i token di aggiornamento derivanti dall'avvenuta verifica PKCE da parte dell'applicazione.
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJra1example",
"id_token": "eyJra2example",
"refresh_token": "eyJj3example",
"token_type": "Bearer",
"expires_in": 3600
}
Aggiornamento del token senza rotazione del token di aggiornamento
Le seguenti richieste di esempio forniscono un token di aggiornamento a un client dell'app in cui la rotazione del token di aggiornamento è inattiva. Poiché il client dell'app ha un segreto client, la richiesta fornisce un'intestazione. Authorization
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded'& Authorization=BasicZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkwgrant_type=refresh_token& client_id=1example23456789& refresh_token=eyJj3example
La risposta restituisce un nuovo ID e token di accesso.
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJra1example",
"id_token": "eyJra2example",
"token_type": "Bearer",
"expires_in": 3600
}
Aggiornamento del token con rotazione del token di aggiornamento
Le seguenti richieste di esempio forniscono un token di aggiornamento a un client dell'app in cui è attiva la rotazione del token di aggiornamento. Poiché il client dell'app ha un segreto client, la richiesta fornisce un'Authorizationintestazione.
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded'& Authorization=BasicZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkwgrant_type=refresh_token& client_id=1example23456789& refresh_token=eyJj3example
La risposta restituisce nuovi ID, token di accesso e aggiornamento.
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJra1example",
"id_token": "eyJra2example",
"refresh_token": "eyJj4example",
"token_type": "Bearer",
"expires_in": 3600
}
Esempi di risposte negative
Le richieste non valide generano errori dall'endpoint del token. Di seguito è riportata una mappa generale del corpo della risposta quando le richieste di token generano un errore.
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
{
"error":"invalid_request|invalid_client|invalid_grant|unauthorized_client|unsupported_grant_type"
}
invalid_request-
Nella richiesta manca un parametro obbligatorio, include un valore di parametro non supportato (diverso da
unsupported_grant_type) oppure è comunque non corretto. Ad esempio,grant_typeèrefresh_tokenmarefresh_tokennon è incluso. invalid_client-
L'autenticazione del client non è riuscita. Ad esempio, quando il client include
client_ideclient_secretnell'intestazione di autorizzazione, ma non esiste un client con valoriclient_ideclient_secret. invalid_grant-
Il token di aggiornamento è stato revocato.
Il codice di autorizzazione è stato utilizzato già o non esiste.
Il client dell'app non ha accesso in lettura a tutti gli attributi nell'ambito richiesto. Ad esempio, l'app richiede l'ambito
emaile il client dell'app può leggere l'attributoemail, ma nonemail_verified. unauthorized_client-
Il client non ha le autorizzazioni necessarie per il flusso di concessione del codice o per l'aggiornamento dei token.
Una richiesta di token con un
redirect_uriche non corrisponde al valore della richiesta di autorizzazione viene restituitaunauthorized_clientcon unerror_descriptionofinvalid_redirect. unsupported_grant_type-
Restituito se
grant_typeè diverso daauthorization_code,refresh_tokenoclient_credentials.