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.

Diagramma che illustra il flusso del tipo di concessione del codice di autorizzazione.
In questo flusso OAuth:
  1. Un utente fa clic su un collegamento in un'applicazione client server Web, richiedendo l'accesso a risorse protette.

  2. L'applicazione client reindirizza il browser all'endpoint di autorizzazione oauth2/v1/authorize con una richiesta di un codice di autorizzazione.

  3. 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.

  4. L'applicazione client scambia quindi il codice di autorizzazione per un token di accesso e spesso di aggiornamento.

  5. Il server di autorizzazione restituisce il token di accesso all'applicazione client.

  6. 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
Può utilizzare un provider di identità esterno per l'autenticazione
Il token di aggiornamento è consentito
Il token di accesso si trova nel contesto dell'utente finale

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

  1. Un utente fa clic su un collegamento nell'applicazione client del server Web (Preventivi clienti), richiedendo l'accesso a risorse protette.

  2. 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>'
  3. 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 (ambito openid).)

  4. Se l'utente non ha già eseguito il login, IAM richiede all'utente di eseguire l'autenticazione. IAM controlla le credenziali dell'utente.

  5. 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.
  6. 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>'
  7. IAM convalida i dati di privilegio e utente associati al codice (client_id, client_secret e al codice di autorizzazione).

  8. 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.

  9. L'applicazione Preventivi cliente elabora il file id_token ed estrae le informazioni dell'utente restituite da IAM.

  10. Preventivi cliente visualizza la home page che contiene informazioni sull'utente.