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 di reindirizzamento e autorizzazione
L'endpoint /oauth2/authorize
è un endpoint di reindirizzamento che supporta due destinazioni di reindirizzamento. Se si include un identity_provider
o idp_identifier
nell'URL, viene eseguito il reindirizzamento invisibile all'utente alla pagina di accesso del gestore dell'identità digitale (IdP) specificato. In caso contrario, viene eseguito il reindirizzamento all'Endpoint Login con gli stessi parametri URL inclusi nella richiesta.
L'endpoint di autorizzazione reindirizza all'accesso gestito o a una pagina di accesso IdP. La destinazione di una sessione utente su questo endpoint è una pagina web con cui l'utente deve interagire direttamente nel proprio browser.
Per utilizzare l'endpoint di autorizzazione, richiama il browser dell'utente all'indirizzo /oauth2/authorize
con parametri che forniscono al pool di utenti informazioni sui seguenti dettagli del pool stesso.
-
Il client dell'app a cui vuoi accedere.
-
L'URL di callback a cui si desidera essere reindirizzati.
-
Gli ambiti OAuth 2.0 che desideri richiedere nel token di accesso dell'utente.
-
Facoltativamente, il gestore dell'identità digitale (IdP) di terze parti che desideri utilizzare per accedere.
Puoi anche specificare i parametri state
e nonce
utilizzati da Amazon Cognito per convalidare le richieste in arrivo.
GET /oauth2/authorize
L'endpoint /oauth2/authorize
supporta solo HTTPS
GET
. L'app in genere avvia questa richiesta nel browser dell'utente. È possibile effettuare richieste solo all'endpoint /oauth2/authorize
tramite HTTPS.
È possibile trovare ulteriori informazioni sulla definizione dell'endpoint di autorizzazione nello standard OpenID Connect (OIDC) nella pagina relativa all'endpoint di autorizzazione
Parametri della richiesta
response_type
-
(Obbligatorio) Il tipo di risposta. Deve essere
code
otoken
.Una richiesta riuscita con
response_type
impostato sucode
restituisce una concessione del codice di autorizzazione. Una concessione del codice di autorizzazione è un parametrocode
che Amazon Cognito aggiunge all'URL di reindirizzamento. L'app scambia il codice con l'Endpoint Token per i token di accesso, ID e aggiornamento. Come best practice di sicurezza e per ricevere token di aggiornamento per gli utenti, usa una concessione del codice di autorizzazione nella tua app.Una richiesta riuscita con
response_type
impostato sutoken
restituisce una concessione implicita. Una concessione implicita è un token di ID e accesso che Amazon Cognito aggiunge all'URL di reindirizzamento. Una concessione implicita è meno sicura perché espone i token e le potenziali informazioni di identificazione agli utenti. Puoi disattivare il supporto per le concessioni implicite nella configurazione del client dell'app. client_id
-
(Obbligatorio) L'ID del client dell'app.
Il valore del parametro
client_id
deve essere l'ID di un client dell'app nel pool di utenti in cui si effettua la richiesta. Il client dell'app deve supportare l'accesso da parte degli utenti locali di Amazon Cognito o di almeno un gestore dell'identità digitale (IdP) di terze parti. redirect_uri
-
(Obbligatorio) L'URL a cui il server di autenticazione reindirizza il browser dopo che Amazon Cognito ha autorizzato l'utente.
L'URI (Uniform Resource Identifier) di reindirizzamento deve avere i seguenti attributi:
-
Deve essere un URI assoluto.
-
Deve essere preregistrato con un client.
-
Non può includere un componente frammento.
Vedi OAuth 2.0
- Endpoint di reindirizzamento. Amazon Cognito richiede che l'URI di reindirizzamento utilizzi HTTPS, ad eccezione di
http://localhost
, che è possibile impostare come URL di callback a scopo di test.Amazon Cognito supporta anche il callback URLs di app come.
myapp://example
-
state
-
(Facoltativo, consigliato) Quando l'app aggiunge un parametro di stato a una richiesta, Amazon Cognito ne restituisce il valore all'app quando l'
/oauth2/authorize
endpoint reindirizza l'utente.Aggiungi questo valore alle richieste di protezione contro attacchi CSRF
. Non è possibile impostare il valore di un parametro
state
su una stringa JSON con codifica URL. Per passare una stringa che corrisponda a questo formato in unstate
parametro, codifica la stringa in base64, quindi decodificala nell'app. identity_provider
-
(Facoltativo) Aggiungi questo parametro per ignorare l'accesso gestito e reindirizzare l'utente a una pagina di accesso del provider. Il valore del parametro identity_provider è il nome del provider di identità come appare nel bacino d'utenza.
-
Per i provider di social network, puoi utilizzare i valori identity_provider,, e.
Facebook
Google
LoginWithAmazon
SignInWithApple
-
Per i pool di utenti di Amazon Cognito, usa il valore.
COGNITO
-
Per SAML 2.0 e OpenID Connect (OIDC) identity provider (IdPs), utilizzano il nome assegnato all'IdP nel pool di utenti.
-
idp_identifier
-
(Facoltativo) Aggiungi questo parametro per reindirizzare a un provider con un nome alternativo per il nome identity_provider. Puoi inserire gli identificatori per SAML 2.0 e OIDC IdPs dal menu Social e provider esterni della console Amazon Cognito.
scope
-
(Facoltativo) Può essere una combinazione di qualsiasi ambito riservato del sistema o ambito personalizzato associato a un client. Gli ambiti devono essere separati da spazi. Gli ambiti riservati al sistema sono
openid
,email
,phone
,profile
eaws.cognito.signin.user.admin
. Qualsiasi ambito utilizzato deve essere associato al client o verrà ignorato in fase di runtime.Se il client non richiede alcun ambito, il server di autenticazione utilizza tutti gli ambiti associati al client.
Un token ID viene restituito solo viene richiesto l'ambito
openid
. Il token di accesso può essere utilizzato in relazione ai bacini d'utenza di Amazon Cognito solo se viene richiesto l'ambitoaws.cognito.signin.user.admin
. Gli ambitiphone
,email
eprofile
possono essere richiesti solo se viene richiesto anche l'ambitoopenid
. Questi ambiti impongono le attestazioni da includere all'interno del token ID. code_challenge_method
-
(Facoltativo) Il protocollo di hashing utilizzato per generare la sfida. Il PKCE RFC
definisce due metodi, S256 e semplice; tuttavia, il server di autenticazione di Amazon Cognito supporta solo S256. code_challenge
-
(Facoltativo) La sfida Proof of Key Code Exchange (PKCE) che hai generato da.
code_verifier
Per ulteriori informazioni, consulta Utilizzo di PKCE nelle concessioni di codici di autorizzazione.Obbligatorio solo quando specifichi un parametro
code_challenge_method
. nonce
-
(Facoltativo) Un valore casuale che puoi aggiungere alla richiesta. Il valore nonce fornito è incluso nel token ID emesso da Amazon Cognito. Per proteggersi da attacchi di tipo replay, l'app può analizzare la richiesta
nonce
nel token dell'ID e confrontarlo con quello generato. Per ulteriori informazioni sulla richiestanonce
, consulta la sezione relativa alla convalida del token dell'IDnella documentazione dello standard OpenID Connect. lang
-
La lingua in cui desideri visualizzare le pagine interattive con l'utente. Le pagine di accesso gestite possono essere localizzate, ma le pagine dell'interfaccia utente ospitate (classiche) no. Per ulteriori informazioni, consulta Localizzazione gestita degli accessi.
login_hint
-
Una richiesta di nome utente da trasmettere al server di autorizzazione. Puoi raccogliere un nome utente, un indirizzo e-mail o un numero di telefono dall'utente e consentire al provider di destinazione di precompilare il nome di accesso dell'utente. Quando invii un
login_hint
parametro eidentity_provider
i parametri noidp_identifier
or all'oauth2/authorize
endpoint, l'accesso gestito compila il campo del nome utente con il valore del suggerimento. Puoi anche passare questo parametro a Endpoint Login e inserire automaticamente il valore del nome utente.Quando la tua richiesta di autorizzazione richiama un reindirizzamento a OIDC o Google IdPs , Amazon Cognito aggiunge un
login_hint
parametro alla richiesta all'autorizzatore di terze parti. Non puoi inoltrare i suggerimenti di accesso a SAML, Apple, Login With Amazon o Facebook (Meta). IdPs
Richieste di esempio con risposte positive
I seguenti esempi illustrano il formato delle richieste HTTP all'/oauth2/authorize
endpoint.
Concessione codice autorizzazione
Questo è un esempio di richiesta per la concessione di un codice di autorizzazione.
Esempio: richiesta GET
La seguente richiesta avvia una sessione per recuperare un codice di autorizzazione che l'utente trasmette all'app nel redirect_uri
luogo di destinazione. Questa sessione richiede gli ambiti per gli attributi utente e per l'accesso alle operazioni API self-service di Amazon Cognito.
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=code& client_id=
1example23456789
& redirect_uri=https://www.example.com
& state=abcdefg
& scope=openid+profile+aws.cognito.signin.user.admin
Esempio: risposta
Il server di autenticazione di Amazon Cognito viene reindirizzato all'app con lo stato e il codice di autorizzazione. Il codice di autorizzazione è valido per cinque minuti.
HTTP/1.1 302 Found
Location: https://www.example.com
?code=a1b2c3d4-5678-90ab-cdef-EXAMPLE11111&state=abcdefg
Concessione del codice di autorizzazione con PKCE
Questo è un esempio di richiesta di concessione di un codice di autorizzazione con PKCE.
Esempio: richiesta GET
La richiesta seguente aggiunge un code_challenge
parametro alla richiesta precedente. Per completare lo scambio di un codice con un token, è necessario includere il code_verifier
parametro nella richiesta all'/oauth2/token
endpoint.
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=code& client_id=
1example23456789
& redirect_uri=https://www.example.com
& state=abcdefg
& scope=aws.cognito.signin.user.admin& code_challenge_method=S256& code_challenge=a1b2c3d4...
Esempio: risposta
Il server di autenticazione reindirizza all'applicazione con il codice e lo stato di autorizzazione. Il codice e lo stato devono essere restituiti nei parametri della stringa di query e non nel frammento:
HTTP/1.1 302 Found
Location: https://www.example.com
?code=a1b2c3d4-5678-90ab-cdef-EXAMPLE11111&state=abcdefg
Concessione del token senza ambito openid
Questo è un esempio di richiesta che genera una concessione implicita e ritorna JWTs direttamente alla sessione dell'utente.
Esempio: richiesta GET
La seguente richiesta riguarda una concessione implicita dal server di autorizzazione. Il token di accesso di Amazon Cognito autorizza le operazioni API self-service.
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=token& client_id=
1example23456789
& redirect_uri=https://www.example.com
& state=abcdefg
& scope=aws.cognito.signin.user.admin
Esempio: risposta
Il server di autorizzazione di Amazon Cognito viene reindirizza all'app con il token di accesso. Poiché non è stato richiesto l'ambito del openid
, Amazon Cognito non restituisce un token ID. Inoltre, Amazon Cognito non restituisce un token di aggiornamento in questo flusso. Amazon Cognito restituisce il token di accesso e lo stato nel frammento e non nella stringa di query:
HTTP/1.1 302 Found
Location: https://YOUR_APP/redirect_uri#access_token=ACCESS_TOKEN&token_type=bearer&expires_in=3600&state=STATE
Concessione del token con ambito openid
Questo è un esempio di richiesta che genera una concessione implicita e ritorna JWTs direttamente alla sessione dell'utente.
Esempio: richiesta GET
La seguente richiesta riguarda una concessione implicita dal server di autorizzazione. Il token di accesso di Amazon Cognito autorizza l'accesso agli attributi utente e alle operazioni API self-service.
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=token& client_id=
1example23456789
& redirect_uri=https://www.example.com
& state=abcdefg
& scope=aws.cognito.signin.user.admin+openid+profile
Esempio: risposta
Il server di autorizzazione reindirizza all'app con il token di accesso e il token ID (poiché l'openid
ambito era incluso):
HTTP/1.1 302 Found
Location: https://www.example.com
#id_token=eyJra67890EXAMPLE&access_token=eyJra12345EXAMPLE&token_type=bearer&expires_in=3600&state=abcdefg
Esempi di risposte negative
Amazon Cognito potrebbe rifiutare la tua richiesta. Le richieste negative sono accompagnate da un codice di errore HTTP e da una descrizione che puoi utilizzare per correggere i parametri della richiesta. Di seguito sono riportati alcuni esempi di risposte negative.
-
Se
client_id
eredirect_uri
sono validi, ma i parametri della richiesta non sono formattati correttamente, il server di autenticazione reindirizza l'errore al clientredirect_uri
e aggiunge un messaggio di errore in un parametro URL. Di seguito sono riportati alcuni esempi di formattazione errata.-
La richiesta non include un
response_type
parametro. -
La richiesta di autorizzazione ha fornito un
code_challenge
parametro, ma non uncode_challenge_method
parametro. -
Il valore del
code_challenge_method
parametro non lo èS256
.
Di seguito è riportata la risposta a una richiesta di esempio con una formattazione errata.
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request
-
-
Se il client richiede
code
otoken
accederesponse_type
, ma non dispone dell'autorizzazione per queste richieste, il server di autorizzazione Amazon Cognito tornaunauthorized_client
a quello del clientredirect_uri
, come segue:HTTP 1.1 302 Found Location: https://client_redirect_uri?error=unauthorized_client
-
Se il client richiede un ambito non valido, sconosciuto o non corretto, il server di autorizzazione di Amazon Cognito restituisce
invalid_scope
alredirect_uri
del client, come riportato di seguito:HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_scope
-
Se si verifica un errore imprevisto nel server, il server di autenticazione torna
server_error
a quello delredirect_uri
client. Poiché l'errore HTTP 500 non viene inviato al client, l'errore non viene visualizzato nel browser dell'utente. Il server di autorizzazione restituisce il seguente errore.HTTP 1.1 302 Found Location: https://client_redirect_uri?error=server_error
-
Quando Amazon Cognito esegue l'autenticazione tramite federazione a terze parti, Amazon IdPs Cognito potrebbe riscontrare problemi di connessione, come i seguenti:
-
Se si verifica un timeout di connessione durante la richiesta del token dal provider di identità, il server di autenticazione reindirizza l'errore al
redirect_uri
del client come segue:HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Timeout+occurred+in+calling+IdP+token+endpoint
-
Se si verifica un timeout di connessione durante la chiamata all'
jwks_uri
endpoint per la convalida del token ID, il server di autenticazione reindirizza con un errore al client nel modo seguente:redirect_uri
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=error_description=Timeout+in+calling+jwks+uri
-
-
Durante l'autenticazione mediante federazione a terze parti IdPs, i provider possono restituire risposte di errore. Ciò può essere dovuto a errori di configurazione o ad altri motivi, come i seguenti:
-
Se viene ricevuta una risposta di errore da altri provider, il server di autenticazione reindirizza l'errore al
redirect_uri
del client come segue:HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=[IdP name]+Error+-+[status code]+error getting token
-
Se viene ricevuta una risposta di errore da Google, il server di autenticazione reindirizza l'errore al
redirect_uri
del client come segue:HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Google+Error+-+[status code]+[Google-provided error code]
-
-
Quando Amazon Cognito rileva un'eccezione di comunicazione quando si connette a un IdP esterno, il server di autenticazione reindirizza con un errore al client con uno dei seguenti messaggi:
redirect_uri
-
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Connection+reset
-
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Read+timed+out
-