

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 all'applicazione utilizzando gli 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 di 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ù IdPs OIDC e le tue applicazioni. Il tuo pool di utenti applica le regole di mappatura degli attributi alle affermazioni contenute nell'ID e nei token di accesso che il provider trasmette direttamente al tuo pool di utenti. [Amazon Cognito emette quindi nuovi token in base agli attributi utente mappati e a eventuali modifiche aggiuntive apportate al flusso di autenticazione con i trigger Lambda.](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. La tua applicazione può reindirizzarli silenziosamente al loro IdP per l'accesso, con un pool di utenti come strumento in background che standardizza il formato del token per la tua applicazione. Per ulteriori informazioni sul reindirizzamento 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 client secret, 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 del pool di utenti.

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


Vedi [Flusso di autenticazione IdP del bacino d'utenza OIDC](cognito-user-pools-oidc-flow.md) per maggiori dettagli su questo flusso di autenticazione.

**Nota**  
L'accesso tramite terze parti (federazione) è disponibile per i bacini d'utenza 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 metodo AWS CLI 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)
+ [Registrare 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 solo i token ID 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.

## Registrare 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 delle app, devi configurare un'applicazione client OIDC nel tuo 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**    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/cognito/latest/developerguide/cognito-user-pools-oidc-idp.html)

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 utente condivida con il tuo pool di utenti. L'ambito **openid** è necessario per consentire a OIDC di offrire qualsiasi informazione IdPs all'utente. [L'`email`ambito è necessario per concedere l'accesso ai reclami e. `email``email_verified`](https://openid.net/specs/openid-connect-basic-1_0.html#StandardClaims) Gli ambiti aggiuntivi nella specifica OIDC si riferiscono a tutti `profile` gli attributi utente e a 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**

 È possibile utilizzare un provider di identità OIDC per stabilire la fiducia tra un provider di identità compatibile con OIDC, ad esempio Salesforce, e il tuo bacino d'utenza.

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 le impostazioni** e inserisci l'URL dell'`/oauth2/idpresponse`endpoint per il dominio del pool di utenti in Callback URL.** Questo è l'URL in cui Salesforce emette il codice di autorizzazione che Amazon Cognito scambia per 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 configurato l'IdP, puoi configurare il 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 **Social e provider esterni**, quindi seleziona **Aggiungi un** provider di identità.

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

1. Inserisci un **nome di provider** univoco.

1. Inserisci l'ID **client** IdP. Questo è l'ID del client applicativo che crei nel tuo IdP OIDC. L'ID client che fornisci deve essere un provider OIDC che hai 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 la stessa applicazione client 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 [OAuth2.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 uno `GET` dei seguenti formati. `POST` L'`userInfo`endpoint Amazon Cognito richiede `HTTP GET` richieste, ad esempio.

1. Scegli un **metodo di configurazione** per il modo in cui desideri che il pool di utenti determini il percorso verso gli endpoint chiave della federazione OIDC presso il tuo IdP. In genere, IdPs ospitate un `/well-known/openid-configuration` endpoint presso un URL di base dell'emittente. Se questo è il caso del tuo provider, l'opzione **Compilazione automatica attraverso l'URL dell'emittente richiede l'URL** di base, tenta di accedere al `/well-known/openid-configuration` percorso da lì e legge gli endpoint ivi 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`authorization`,`token`, `userInfo` e endpoint. `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 tue 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 claim o in una risposta ID-Token. `userInfo` Amazon Cognito mappa automaticamente il claim **sub** OIDC al `username` profilo utente di destinazione.

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

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

1. Dal menu **App client**, seleziona un client dell'app 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 nel secondo esempio su. [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 `CreateIdentityProvider` file `UpdateIdentityProvider` di `--cli-input-json` input per. [create-identity-provider](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>

Nell'applicazione, è necessario richiamare un browser nel client dell'utente in modo che possa accedere con il proprio provider OIDC. Prova 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 tuo pool di utenti con un dominio 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 client per l'app, accedi alla scheda **Pagine di accesso** e selezioni **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 client IDs e callback URLs, consulta. [Impostazioni specifiche dell'applicazione con client di app](user-pool-settings-client-apps.md)

Il seguente collegamento 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}}
```