Tipo assegnazione codice autorizzazione
Utilizzare questo tipo di privilegio quando si desidera ottenere un codice di autorizzazione utilizzando un server di autorizzazione come intermediario tra l'applicazione client e il proprietario della risorsa utilizzando i domini di Identity.
Nel diagramma riportato di seguito viene visualizzato il flusso Tipo di concessione codice autorizzazione.

Un utente fa clic su un collegamento in un'applicazione client server Web, richiedendo l'accesso a risorse protette.
L'applicazione client reindirizza il browser all'endpoint di autorizzazione
oauth2/v1/authorize
con una richiesta di un codice di autorizzazione.Il server di autorizzazione restituisce un codice di autorizzazione all'applicazione client tramite un reindirizzamento browser dopo che il proprietario della risorsa concede il consenso.
L'applicazione client scambia quindi il codice di autorizzazione per un token di accesso e spesso di aggiornamento.
Il server di autorizzazione restituisce il token di accesso all'applicazione client.
- L'applicazione client utilizza il token di accesso in una chiamata API per ottenere dati protetti.Nota
Le credenziali del proprietario della risorsa non vengono mai esposte al client.
Funzione | Disponibile |
---|---|
Richiede l'autenticazione del client | No |
Richiede al client di conoscere le credenziali utente | No |
Interazione con l'utente finale basata sul browser | Sì |
Può utilizzare un provider di identità esterno per l'autenticazione | Sì |
Il token di aggiornamento è consentito | Sì |
Il token di accesso si trova nel contesto dell'utente finale | Sì |
Vedere un esempio di esempio di flusso di autorizzazione del tipo di concessione del codice di autorizzazione.
Esempio di flusso di autorizzazione del tipo di concessione del codice di autorizzazione
In questo esempio di flusso di autorizzazione viene descritto come eseguire una richiesta di login a OpenID Connect utilizzando un codice di autorizzazione.
Questo flusso è un flusso OAuth a tre fasi, che si riferisce agli scenari in cui l'applicazione chiama le API del dominio di Identity per conto degli utenti finali e in cui talvolta è richiesto il consenso dell'utente. Questo flusso mostra come configurare Federated Single Sign-On tra un dominio di Identity e un'applicazione personalizzata utilizzando OAuth 2.0 e OpenID Connect.
Quando si crea un'applicazione utilizzando il tipo di privilegio Codice autorizzazione nella console del dominio di Identity:
-
Specificare Applicazione sicura come tipo di applicazione.
-
Selezionare Codice autorizzazione come tipo di assegnazione.
-
Specificare l'URI di reindirizzamento, dove vengono inviate le risposte alle richieste di autenticazione.
-
Facoltativamente, selezionare il tipo di privilegio Aggiorna token per restituire un token di aggiornamento con il token di accesso.
Per ulteriori informazioni sul tipo di privilegio Codice autorizzazione e su un diagramma di flusso di autorizzazione, vedere Tipo di concessione Codice autorizzazione.
Flusso autorizzazione
-
Un utente fa clic su un collegamento nell'applicazione client del server Web (Preventivi clienti), richiedendo l'accesso a risorse protette.
-
L'applicazione Preventivi cliente reindirizza il browser all'endpoint di autorizzazione del dominio di Identity
(oauth2/v1/authorize)
con una richiesta di codice di autorizzazione.L'URL della richiesta contiene parametri di query che indicano il tipo di accesso richiesto.Nota
Un valore nonce è una stringa casuale crittograficamente forte che viene utilizzata per impedire il riutilizzo delle risposte intercettate.Richiesta di esempio: Client riservato/affidabile
GET https://<domainURL>/oauth2/v1/authorize?client_id=<client_id>&response_type=code&redirect_uri=<client-redirect-uri>&scope=openid&nonce=<nonce-value>&state=1234
Richiesta di esempio: client riservato/affidabile che include il token di aggiornamento nella richiesta
GET https://<domainURL>/oauth2/v1/authorize?client_id=<client-id&response_type=code&redirect_uri=<client-redirect-uri>&scope=openid%20<Resource Server Scope>%20offline_access&nonce=<nonce-value>&state=1234
Richiesta di esempio: client pubblico
GET https://<domainURL>/oauth2/v1/authorize?client_id=<client_id>&response_type=id_token&redirect_uri=<client-redirect-uri>&scope=openid&nonce=<nonce-value>&state=1234
Richiesta di esempio mediante PKCE
GET https://<domainURL>/oauth2/v1/authorize?client_id=<client_id>&response_type=code&redirect_uri=<client-redirect-uri>&scope=openid&nonce=<nonce-value>&state=1234&code_challenge=<code-challenge>&code_challenge_method=<plain|S256>'
-
Il dominio di Identity riceve la richiesta e identifica che l'app Preventivi cliente (identificata dal relativo
client_id
) sta richiedendo un codice di autorizzazione per ottenere ulteriori informazioni sul proprietario della risorsa (ambitoopenid).
) -
Se l'utente non ha già eseguito il login, IAM richiede all'utente di eseguire l'autenticazione. IAM controlla le credenziali dell'utente.
-
Se il login riesce, IAM reindirizza il browser all'applicazione Preventivi cliente con un codice di autorizzazione.Nota
Se l'utente non esegue l'autenticazione, viene restituito un errore anziché il codice di autorizzazione. -
L'applicazione Preventivi cliente estrae il codice di autorizzazione ed effettua una richiesta a un dominio di Identity per lo scambio del codice di autorizzazione per un token di accesso.
Esempio di richiesta: client riservato/affidabile
curl -i -H 'Authorization: Basic <base64-clientid-secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=authorization_code&code=<authz-code>'
Esempio di richiesta: Public Client
curl -i -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=authorization_code&code=<authz-code>&redirect_uri=<client-redirect-uri>&client_id=<client-id>'
Richiesta di esempio mediante PKCE
curl -i -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=authorization_code&code=<authz-cod>e&redirect_uri=<client-redirect-uri>&client_id=<client-id>&code_verifier=<code-verifier>'
-
IAM convalida i dati di privilegio e utente associati al codice (
client_id, client_secret
e al codice di autorizzazione). -
Vengono restituiti un token di accesso e un token di identità. Il token di accesso contiene informazioni sugli ambiti che l'applicazione Preventivi cliente può richiedere per conto dell'utente. L'applicazione può utilizzare questo token quando richiede API per conto dell'utente.
Il token di identità viene recuperato solo quando si richiede l'ambito
openid
. Questo token contiene informazioni di identificazione sull'utente e viene utilizzato per l'autenticazione federata. -
L'applicazione Preventivi cliente elabora il file
id_token
ed estrae le informazioni dell'utente restituite da IAM. -
Preventivi cliente visualizza la home page che contiene informazioni sull'utente.