

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

# Utilizzo di provider di identità OIDC con un pool di utenti
<a name="cognito-user-pools-oidc-idp"></a>

Gli utenti possono accedere alla tua applicazione utilizzando i loro account esistenti dei provider di identità OpenID Connect (OIDC) (). IdPs Con i provider OIDC, gli utenti di sistemi single sign-on indipendenti possono fornire le credenziali esistenti mentre l'applicazione riceve i token OIDC nel formato condiviso dei pool di utenti. Per configurare un IdP OIDC, configura il tuo IdP in modo che gestisca il tuo pool di utenti come RP e configura l'applicazione per gestire il tuo pool di utenti come IdP. Amazon Cognito funge da passaggio intermedio tra più OIDC e le tue applicazioni. IdPs Il tuo pool di utenti applica regole di mappatura degli attributi alle affermazioni contenute nell'ID e nei token di accesso che il tuo provider trasmette direttamente al tuo pool di utenti. Amazon Cognito emette quindi nuovi token in base agli attributi utente mappati e a qualsiasi modifica aggiuntiva apportata al flusso di autenticazione con i trigger Lambda. [Trigger Lambda per utenti federati](cognito-user-pools-working-with-lambda-triggers.md#lambda-triggers-for-federated-users)

Agli utenti che accedono con un IdP OIDC non è richiesto di fornire nuove credenziali o informazioni per accedere all'applicazione del pool di utenti. L'applicazione può reindirizzarli silenziosamente al proprio IdP per l'accesso, con un pool di utenti come strumento in background che standardizza il formato del token per l'applicazione. Per saperne di più sul reindirizzamento dell'IdP, consulta. [Endpoint Authorize](authorization-endpoint.md)

Come con altri provider di identità di terze parti, devi registrare la tua applicazione presso il provider OIDC e ottenere informazioni sull'applicazione IdP che desideri connettere al tuo pool di utenti. Un pool di utenti OIDC IdP richiede un ID client, un segreto client, gli ambiti che si desidera richiedere e informazioni sugli endpoint del servizio del provider. Il tuo pool di utenti può scoprire gli endpoint OIDC del provider da un endpoint di rilevamento oppure puoi inserirli manualmente. È inoltre necessario esaminare i token ID del provider e creare mappature degli attributi tra l'IdP e gli attributi nel pool di utenti.

![Flusso di autenticazione IdP del bacino d'utenza OIDC](https://docs.aws.amazon.com/it_it/cognito/latest/developerguide/images/flow-cup-oidc-endpoints.png)


[Flusso di autenticazione IdP del bacino d'utenza OIDC](cognito-user-pools-oidc-flow.md)Per ulteriori dettagli su questo flusso di autenticazione, consulta.

**Nota**  
Sign-in tramite una terza parte (federazione) è disponibile nei pool di utenti di Amazon Cognito. Questa funzionalità è indipendente dalla federazione OIDC con i pool di identità di Amazon Cognito.

Puoi aggiungere un IdP OIDC al tuo pool di utenti nel Console di gestione AWS, tramite o con il AWS CLI metodo API del pool di utenti. [ CreateIdentityProvider ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)

**Topics**
+ [Prerequisiti](#cognito-user-pools-oidc-idp-prerequisites)
+ [Registra un'applicazione con un IdP OIDC](#cognito-user-pools-oidc-idp-step-1)
+ [Aggiunta di un IdP OIDC al bacino d'utenza](#cognito-user-pools-oidc-idp-step-2)
+ [Test della configurazione dell'IdP OIDC](#cognito-user-pools-oidc-idp-step-3)
+ [Flusso di autenticazione IdP del bacino d'utenza OIDC](cognito-user-pools-oidc-flow.md)

## Prerequisiti
<a name="cognito-user-pools-oidc-idp-prerequisites"></a>

Prima di iniziare, è necessario:
+ Un bacino d'utenza con un client di applicazioni e dominio per il bacino d'utenza. Per ulteriori informazioni, consulta [Creazione di un bacino d'utenza](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).
+ Un IdP OIDC con la seguente configurazione: 
  + Supporta l'autenticazione client `client_secret_post`. Amazon Cognito non controlla l'attestazione `token_endpoint_auth_methods_supported` nell'endpoint di rilevamento OIDC per il tuo IdP. Amazon Cognito non supporta l'autenticazione client `client_secret_basic`. Per ulteriori informazioni sull'autenticazione client, consulta [Autenticazione client](https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication) nella documentazione di OpenID Connect.
  + Utilizza HTTPS solo per endpoint OIDC come `openid_configuration`, `userInfo` e `jwks_uri`.
  + Utilizza solo le porte TCP 80 e 443 per gli endpoint OIDC.
  + Firma i token ID solo con algoritmi HMAC-SHA ECDSA o RSA.
  + Pubblica un'attestazione `kid` dell'ID chiave presso il relativo `jwks_uri` e include un'attestazione `kid` nei rispettivi token.
  + Presenta una chiave pubblica non scaduta con una catena di fiducia CA root valida.

## Registra un'applicazione con un IdP OIDC
<a name="cognito-user-pools-oidc-idp-step-1"></a>

Prima di aggiungere un IdP OIDC alla configurazione del pool di utenti e assegnarlo ai client dell'app, è necessario configurare un'applicazione client OIDC nel proprio IdP. Il tuo pool di utenti è l'applicazione relying-party che gestirà l'autenticazione con il tuo IdP.

**Registrazione con un IdP OIDC**

1. Crea un account sviluppatore con l'IdP OIDC.


**Collegamenti a OIDC IdPs**  

<table>
<thead>
  <tr><th>IdP OIDC</th><th>Installazione</th><th>URL di individuazione OIDC</th></tr>
</thead>
<tbody>
  <tr><td>Salesforce</td><td><a href="https://help.salesforce.com/s/articleView?id=xcloud.service_provider_define_oid.htm&amp;type=5">Salesforce come fornitore di identità OpenID Connect </a></td><td><code>https://MyDomainName.my.salesforce.com/.well-known/openid-configuration</code></td></tr>
  <tr><td>OneLogin</td><td><a href="https://developers.onelogin.com/openid-connect/connect-to-onelogin">Connetti un'app abilitata per OIDC </a></td><td><code>https://your-domain.onelogin.com/oidc/2/.well-known/openid-configuration</code></td></tr>
  <tr><td>JumpCloud</td><td><a href="https://jumpcloud.com/support/sso-with-oidc">SSO con OIDC </a></td><td><code>https://oauth.id.jumpcloud.com/.well-known/openid-configuration</code></td></tr>
  <tr><td>Okta</td><td><a href="https://help.okta.com/en/prev/Content/Topics/Apps/Apps_App_Integration_Wizard.htm#OIDCWizard">Installa un provider di identità Okta</a></td><td><code>https://Your Okta subdomain.okta.com/.well-known/openid-configuration</code></td></tr>
  <tr><td>ID Microsoft Entra</td><td><a href="https://learn.microsoft.com/en-us/entra/identity-platform/v2-protocols-oidc">OpenID Connect sulla piattaforma di identità Microsoft </a></td><td><code>https://login.microsoftonline.com/{tenant}/v2.0</code><br />I valori di <code>tenant</code> possono includere un ID tenant,, <code>common</code><code>organizations</code>, o. <code>consumers</code></td></tr>
</tbody>
</table>


1. Registra l'URL del dominio del bacino d'utenza con l'`/oauth2/idpresponse`endpoint presso l'IdP OIDC. In questo modo verrà accettato dall'IdP OIDC durante l'autenticazione degli utenti da parte di Amazon Cognito.

   ```
   https://{{mydomain.auth.us-east-1.amazoncognito.com}}/oauth2/idpresponse
   ```

1. Seleziona gli [ ambiti ](cognito-user-pools-define-resource-servers.md#cognito-user-pools-define-resource-servers-about-scopes) che desideri che la tua directory utenti condivida con il tuo pool di utenti. L'ambito ** openid ** è necessario affinché OIDC offra qualsiasi informazione IdPs utente. L'`email`ambito è necessario per consentire l'accesso ai reclami e. `email` `email_verified` [https://openid.net/specs/openid-connect-basic-1_0.html#StandardClaims](https://openid.net/specs/openid-connect-basic-1_0.html#StandardClaims) Gli ambiti aggiuntivi nelle specifiche OIDC riguardano tutti `profile` gli attributi utente e e`phone`. `phone_number` `phone_number_verified`

1. L'IdP OIDC fornisce un ID client e un segreto client. Annota questi valori e aggiungili alla configurazione dell'IdP OIDC che aggiungerai successivamente al tuo pool di utenti.

**Esempio: utilizza Salesforce come IdP OIDC con il tuo bacino d'utenza**

 Si utilizza un IdP OIDC quando si desidera stabilire un rapporto di fiducia tra un OIDC-compatible IdP come Salesforce e il pool di utenti.

1. [Creazione di un account](https://developer.salesforce.com/signup) sul sito Web di Salesforce Developers.

1. [Accedi](https://developer.salesforce.com) tramite il tuo account sviluppatore impostato nella fase precedente.

1. Dalla pagina di Salesforce, procedi in una delle modalità seguenti:
   +  Se utilizzi Lightning Experience, scegli l'icona a forma di ingranaggio delle impostazioni, quindi scegli **Setup Home** (Imposta home).
   +  Se utilizzi Salesforce Classic e vedi la voce **Setup** (Impostazioni) nell'intestazione dell'interfaccia utente, sceglila.
   +  Se utilizzi Salesforce Classic e non vedi la voce **Setup** (Impostazioni) nell'intestazione, scegli il tuo nome nella barra di navigazione in alto e scegli **Setup** (Impostazioni) dall'elenco a discesa.

1. Nella barra di navigazione a sinistra, scegli **Company Settings** (Impostazioni azienda). 

1. Nella barra di navigazione, scegli **Domain** (Dominio), inserisci un dominio e seleziona **Create** (Crea). 

1. Nella barra di navigazione a sinistra, vai a **Platform Tools** Strumenti piattaforma e scegli **App**. 

1. Scegli **App Manager** Gestore app.

1. 

   1. Scegli **New connected app** (Nuova app connessa).

   1. Completa i campi obbligatori.

      In **Start URL (URL di avvio)**, inserisci un URL all'endpoint `/authorize` per il dominio del bacino d'utenza che accede con il provider di identità Salesforce. Quando gli utenti accedono all'app connessa, Salesforce li indirizza a questo URL per completare l'accesso. Quindi Salesforce reindirizza gli utenti all'URL di callback associato al client di app.

      ```
      https://{{mydomain.auth.us-east-1.amazoncognito.com}}/authorize?response_type=code&client_id={{<your_client_id>}}&redirect_uri={{https://www.example.com}}&identity_provider={{CorpSalesforce}}
      ```

   1. Abilita **OAuth settings (Impostazioni OAuth)** e inserisci l'URL dell'endpoint `/oauth2/idpresponse` per il dominio del bacino d'utenza in **Callback URL (URL di callback)**. Questo è l'URL da cui Salesforce emette il codice di autorizzazione che Amazon Cognito scambia con un token OAuth.

      ```
      https://{{mydomain.auth.us-east-1.amazoncognito.com}}/oauth2/idpresponse
      ```

1. Seleziona i tuoi [scopes](https://openid.net/specs/openid-connect-basic-1_0.html#Scopes) (ambiti). È necessario includere **openid** per l'ambito. Per concedere l'accesso alle [attestazioni](https://openid.net/specs/openid-connect-basic-1_0.html#StandardClaims) **email** e **email\_verified** aggiungi l'ambito **email**. Separa gli ambiti con gli spazi.

1. Scegli **Create (Crea)**.

   In Salesforce, l'ID client viene chiamato **Consumer Key** (Chiave consumatore), mentre il segreto client è un **Consumer Secret** (Segreto consumatore). Prendi nota dell'ID client e del segreto client. Li utilizzerai nella sezione successiva.

## Aggiunta di un IdP OIDC al bacino d'utenza
<a name="cognito-user-pools-oidc-idp-step-2"></a>

Dopo aver impostato il tuo IdP, puoi configurare il tuo pool di utenti per gestire le richieste di autenticazione con un IdP OIDC.

------
#### [ Amazon Cognito console ]

**Aggiungi un IdP OIDC nella console**

1. Passa alla [console Amazon Cognito](https://console.aws.amazon.com/cognito/home). Se richiesto, inserisci le tue credenziali AWS .

1. Scegli **User Pools** (Bacini d'utenza) dal menu di navigazione.

1. Scegli un bacino d'utenza esistente dall'elenco o [creane uno nuovo](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Scegli il ** menu Provider ** social ed esterni, quindi seleziona ** Aggiungi un provider di identità. **

1. Scegli un provider di identità **OpenID Connect**.

1. Inserisci un nome univoco ** per il provider**.

1. Inserisci l'ID ** ** client IdP. Questo è l'ID del client applicativo che crei nel tuo IdP OIDC. L'ID client fornito deve essere un provider OIDC configurato con un URL di callback di. `https://{{[your user pool domain]}}/oauth2/idpresponse`

1. Inserisci il segreto del client IdP**. ** Questo deve essere il segreto del client per lo stesso client applicativo del passaggio precedente.

1. <a name="cognito-user-pools-oidc-step-2-substep-9"></a>Inserisci gli **Authorized scopes** (Ambiti autorizzati) per questo provider. Gli ambiti definiscono quali gruppi di attributi utente (ad esempio `name` e `email`) verranno richiesti dalla tua applicazione al tuo provider. Gli ambiti devono essere separati da spazi, secondo la specifica [OAuth 2.0](https://tools.ietf.org/html/rfc6749#section-3.3).

   Il tuo IdP potrebbe richiedere agli utenti di acconsentire a fornire questi attributi alla tua applicazione al momento dell'accesso.

1. Scegli un metodo ** di richiesta ** degli attributi. IdPspotrebbe richiedere che le richieste ai rispettivi `userInfo` endpoint siano formattate come o`GET`. `POST` L'`userInfo`endpoint Amazon Cognito richiede `HTTP GET` richieste, ad esempio.

1. Scegli un metodo di ** configurazione in ** base al modo in cui desideri che il tuo pool di utenti determini il percorso verso gli OIDC-federation endpoint chiave del tuo IdP. In genere, IdPs ospita un `/well-known/openid-configuration` endpoint presso l'URL di base dell'emittente. Se questo è il caso del tuo provider, l'**opzione Compilazione ** automatica tramite l'URL dell'emittente richiede l'URL di base, tenta di accedere al `/well-known/openid-configuration` percorso da lì e legge gli endpoint elencati. Potresti avere percorsi di endpoint non tipici o voler passare le richieste a uno o più endpoint tramite un proxy alternativo. In questo caso, seleziona Input ** manuale ** e specifica i percorsi per gli endpoint`authorization`,`token`, `userInfo` e. `jwks_uri`
**Nota**  
L'URL deve iniziare con `https://` e non deve finire con una barra `/`. Solo i numeri di porta 443 e 80 possono essere utilizzati con questo URL. Ad esempio, Salesforce usa questo URL:  
`https://login.salesforce.com`   
Scegliendo il riempimento automatico, il documento di individuazione deve utilizzare HTTPS per i seguenti valori: `authorization_endpoint`, `token_endpoint`, `userinfo_endpoint`, e `jwks_uri`. In caso contrario, l'accesso avrà esito negativo.

1. Configura le regole di mappatura degli attributi in ** Map attributes tra il tuo provider OpenID Connect e il tuo pool di utenti. ** **L'attributo del pool di utenti ** è l'*attributo di * destinazione nel profilo utente di Amazon Cognito e l'attributo ** OpenID Connect ** è l'attributo di * origine * che desideri che Amazon Cognito trovi in un reclamo o in una risposta. ID-token `userInfo` Amazon Cognito mappa automaticamente il claim OIDC ** sub ** a nel profilo utente di destinazione. `username`

   Per ulteriori informazioni, consulta [Mappatura degli attributi IdP a profili e token](cognito-user-pools-specifying-attribute-mapping.md).

1. Scegli **Aggiungi provider di identità**.

1. Dal ** menu ** App client, seleziona un app client dall'elenco. Vai alla ** scheda Pagine di ** accesso e in Configurazione delle pagine di accesso ** gestite**, seleziona ** Modifica**. Individua i provider di ** identità ** e aggiungi il tuo nuovo IdP OIDC.

1. Scegli **Save changes** (Salva modifiche).

------
#### [ API/CLI ]

Vedi la configurazione OIDC nell'esempio due all'indirizzo. [ CreateIdentityProvider ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html#API_CreateIdentityProvider_Example_2) È possibile modificare questa sintassi e utilizzarla come corpo della richiesta o come file di `--cli-input-json` input per `CreateIdentityProvider` `UpdateIdentityProvider` create-identity-provider. [https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-identity-provider.html](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/create-identity-provider.html)

------

## Test della configurazione dell'IdP OIDC
<a name="cognito-user-pools-oidc-idp-step-3"></a>

Nella tua applicazione, devi richiamare un browser nel client dell'utente in modo che possa accedere con il proprio provider OIDC. Verifica l'accesso con il tuo provider dopo aver completato le procedure di configurazione nelle sezioni precedenti. L'URL di esempio seguente carica la pagina di accesso per il pool di utenti con un dominio di prefisso.

```
https://{{mydomain.auth.us-east-1.amazoncognito.com}}/oauth2/authorize?response_type=code&client_id={{1example23456789}}&redirect_uri={{https://www.example.com}}
```

Questo link è la pagina a cui Amazon Cognito ti indirizza quando accedi al ** menu App client, selezioni un ** app client, vai alla ** scheda Pagine di ** accesso e seleziona Visualizza pagina di accesso. ** ** Per ulteriori informazioni sui domini del pool di utenti, consulta. [Configurazione di un dominio di bacino d'utenza](cognito-user-pools-assign-domain.md) Per ulteriori informazioni sui client delle app, inclusi gli ID client e gli URL di callback, consulta. [Impostazioni specifiche dell'applicazione con client di app](user-pool-settings-client-apps.md)

Il seguente link di esempio imposta il reindirizzamento silenzioso al `MyOIDCIdP` provider dal parametro [Endpoint Authorize](authorization-endpoint.md) with an `identity_provider` query. Questo URL ignora l'accesso interattivo al pool di utenti con accesso gestito e va direttamente alla pagina di accesso IdP.

```
https://{{mydomain.auth.us-east-1.amazoncognito.com}}/oauth2/authorize?identity_provider={{MyOIDCIdP}}&response_type=code&client_id={{1example23456789}}&redirect_uri={{https://www.example.com}}
```