

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

# Accesso al pool di utenti con provider di identità di terze parti
<a name="cognito-user-pools-identity-federation"></a>

Gli utenti della tua app possono accedere direttamente tramite un pool di utenti oppure possono federarsi tramite un provider di identità (IdP) di terze parti. Il pool di utenti gestisce il sovraccarico di gestione dei token restituiti dall'accesso social tramite Facebook, Google, Amazon e Apple e da OpenID Connect (OIDC) e SAML. IdPs Con l'interfaccia utente web ospitata integrata, Amazon Cognito fornisce la gestione e la gestione dei token per tutti gli utenti autenticati. IdPs In questo modo, i sistemi back-end possono standardizzare un set di token del bacino d'utenza.

## Funzionamento dell'accesso federato nei pool di utenti di Amazon Cognito
<a name="cognito-user-pools-identity-federation-how-it-works"></a>

L'accesso tramite terze parti (federazione) è disponibile per i bacini d'utenza Amazon Cognito. Questa funzione è indipendente dalla federazione tramite pool di identità di Amazon Cognito (identità federate).

![\[Panoramica sull'autenticazione con accesso social\]](http://docs.aws.amazon.com/it_it/cognito/latest/developerguide/images/scenario-authentication-cup.png)


Amazon Cognito è una directory di utenti e un provider di identità OAuth (IdP) 2.0. Quando gli *utenti locali* effettuano l'accesso alla directory Amazon Cognito, il pool di utenti è un IdP dell'app. Un utente locale esiste esclusivamente nella directory del pool di utenti senza federazione tramite un IdP esterno.

Quando connetti Amazon Cognito a social, SAML o OpenID Connect (OIDC IdPs), il tuo pool di utenti funge da ponte tra più fornitori di servizi e la tua app. Per il gestore dell'identità digitale (IdP) in uso, Amazon Cognito è un fornitore di servizi. Devi IdPs passare un token ID OIDC o un'asserzione SAML ad Amazon Cognito. Amazon Cognito legge le asserzioni relative all'utente nel token o nell'asserzione e mappa tali asserzioni su un nuovo profilo utente nella directory del pool di utenti.

Amazon Cognito crea quindi un profilo utente per l'utente federato nella propria directory. Amazon Cognito aggiunge attributi all'utente in base alle asserzioni del gestore dell'identità digitale (IdP) e, nel caso di gestori dell'identità OIDC e digitale, un endpoint `userinfo` pubblico gestito dal gestore dell'identità digitale. Gli attributi dell'utente cambiano nel pool di utenti quando un attributo del gestore dell'identità digitale (IdP) mappato cambia. Puoi anche aggiungere altri attributi indipendentemente da quelli del gestore dell'identità digitale (IdP).

Dopo che Amazon Cognito ha creato un profilo per l' utente federato, cambia la sua funzione e si presenta come gestore dell'identità digitale (IdP) all'app, che ora è il fornitore di servizi. Amazon Cognito è una combinazione di OIDC e 2.0 IdP. OAuth Genera token di accesso, token ID e token di aggiornamento. Per ulteriori informazioni sui token, consulta [Comprensione dei token web JSON del pool di utenti () JWTs](amazon-cognito-user-pools-using-tokens-with-identity-providers.md).

Devi progettare un'app che si integri con Amazon Cognito per autenticare e autorizzare gli utenti, che siano federati o nativi.

## Responsabilità di un'app come provider di servizi con Amazon Cognito
<a name="cognito-user-pools-identity-federation-how-it-works-app-responsibilities"></a><a name="cognito-user-pools-identity-federation-how-it-works-app-responsibilities"></a>

**Verifica ed elaborazione delle informazioni nei token**  
Nella maggior parte degli scenari, Amazon Cognito reindirizza l'utente autenticato a un URL dell'app aggiunta con un codice di autorizzazione. L'app [scambia il codice](https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html) per l'accesso, l'ID e l'aggiornamento dei token. Deve quindi [verificare la validità dei token](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html) e inviare informazioni all'utente in base alle asserzioni contenute nei token.

**Risposta agli eventi di autenticazione con le richieste API di Amazon Cognito**  
L'app deve integrarsi con le [API dei pool di utenti di Amazon Cognito](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) e gli[endpoint dell'API di autenticazione](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html). L'API di autenticazione effettua l'accesso e la disconnessione dell'utente e gestisce i token. L'API dei pool di utenti dispone di una serie di operazioni che gestiscono il pool di utenti, gli utenti e la sicurezza dell'ambiente di autenticazione. L'app deve sapere cosa fare dopo aver ricevuto una risposta da Amazon Cognito.

## Informazioni importanti sull'accesso di terze parti ai pool di utenti di Amazon Cognito
<a name="cognito-user-pools-identity-federation-how-it-works-considerations"></a><a name="cognito-user-pools-identity-federation-how-it-works-considerations"></a>
+ Se i tuoi utenti accedono con provider federati, devi scegliere un dominio. [In questo modo vengono configurate le pagine per l'accesso gestito.](cognito-userpools-server-contract-reference.md) Per ulteriori informazioni, consulta [Utilizzo del proprio dominio per l'accesso gestito](cognito-user-pools-add-custom-domain.md).
+ Non puoi accedere a utenti federati con operazioni API come [ InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)e [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html). Gli utenti federati possono accedere solo con l'[Endpoint Login](login-endpoint.md) o l'[Endpoint Authorize](authorization-endpoint.md).
+ [Endpoint Authorize](authorization-endpoint.md) è un endpoint di *reindirizzamento*. Se fornisci un `identity_provider` parametro `idp_identifier` or nella tua richiesta, questo reindirizza automaticamente al tuo IdP, ignorando l'accesso gestito. In caso contrario, reindirizza all'accesso gestito. [Endpoint Login](login-endpoint.md)
+ Quando l'accesso gestito reindirizza una sessione a un IdP federato, Amazon Cognito include l'intestazione nella richiesta`user-agent`. `Amazon/Cognito`
+ Amazon Cognito deriva l'attributo `username` per un profilo utente federato da una combinazione di un identificatore fisso e il nome del gestore dell'identità digitale (IdP). Per generare un nome utente che soddisfi i requisiti personalizzati, crea una mappatura per l'attributo `preferred_username`. Per ulteriori informazioni, consulta [Cose da sapere sulle mappature](cognito-user-pools-specifying-attribute-mapping.md#cognito-user-pools-specifying-attribute-mapping-requirements).

  Ad esempio: `MyIDP_bob@example.com`
+ Amazon Cognito crea un [gruppo di utenti](cognito-user-pools-user-groups.md) per ogni OIDC SAMl e IdP social che aggiungi al tuo pool di utenti. Il nome del gruppo è nel formato`[user pool ID]_[IdP name]`, ad esempio o. `us-east-1_EXAMPLE_MYSSO` `us-east-1_EXAMPLE_Google` Ogni profilo utente IdP univoco generato automaticamente viene aggiunto automaticamente a questo gruppo. [Gli utenti collegati](cognito-user-pools-identity-federation-consolidate-users.md) non vengono aggiunti automaticamente a questo gruppo, ma puoi aggiungere i loro profili al gruppo con un processo separato.
+ Amazon Cognito registra le informazioni sull'identità dell'utente federato in un attributo e un'asserzione nel token ID, chiamato `identities`. Questa asserzione contiene il gestore dell'utente e il relativo ID univoco del gestore. Non è possibile modificare l'attributo `identities` direttamente in un profilo utente. Per ulteriori informazioni su come collegare un utente federato, consulta [Collegamento di utenti federati a un profilo utente esistente](cognito-user-pools-identity-federation-consolidate-users.md).
+ Quando aggiorni il tuo IdP in una richiesta [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)API, le modifiche possono richiedere fino a un minuto prima che vengano visualizzate nell'accesso gestito.
+ Amazon Cognito supporta fino a 20 reindirizzamenti HTTP tra se stesso e l'IdP.
+ Quando un utente accede con l'accesso gestito, il suo browser memorizza un cookie di sessione di accesso crittografato che registra il cliente e il provider con cui ha effettuato l'accesso. Se tenta di accedere nuovamente con gli stessi parametri, l'accesso gestito riutilizza qualsiasi sessione esistente *non scaduta e l'utente si autentica senza* fornire nuovamente le credenziali. Se l'utente accede nuovamente con un IdP diverso, incluso un passaggio da o verso un accesso al pool di utenti locale, deve fornire le credenziali e generare una nuova sessione di accesso.

  Puoi assegnare qualsiasi gruppo di utenti IdPs a qualsiasi client dell'app e gli utenti possono accedere solo con un IdP che hai assegnato al loro client di app.

**Topics**
+ [Funzionamento dell'accesso federato nei pool di utenti di Amazon Cognito](#cognito-user-pools-identity-federation-how-it-works)
+ [Responsabilità di un'app come provider di servizi con Amazon Cognito](#cognito-user-pools-identity-federation-how-it-works-app-responsibilities)
+ [Informazioni importanti sull'accesso di terze parti ai pool di utenti di Amazon Cognito](#cognito-user-pools-identity-federation-how-it-works-considerations)
+ [Configurazione dei provider di identità per il bacino d'utenza](cognito-user-pools-identity-provider.md)
+ [Utilizzo di provider di identità social con un pool di utenti](cognito-user-pools-social-idp.md)
+ [Utilizzo di provider di identità SAML con un pool di utenti](cognito-user-pools-saml-idp.md)
+ [Utilizzo di provider di identità OIDC con un pool di utenti](cognito-user-pools-oidc-idp.md)
+ [Mappatura degli attributi IdP su profili e token](cognito-user-pools-specifying-attribute-mapping.md)
+ [Collegamento di utenti federati a un profilo utente esistente](cognito-user-pools-identity-federation-consolidate-users.md)

# Configurazione dei provider di identità per il bacino d'utenza
<a name="cognito-user-pools-identity-provider"></a>

Con i pool di utenti, puoi implementare l'accesso tramite una varietà di provider di identità esterni ()IdPs. Questa sezione della guida contiene istruzioni per configurare questi provider di identità con il tuo pool di utenti nella console Amazon Cognito. In alternativa, puoi utilizzare l'API dei pool di utenti e un AWS SDK per aggiungere in modo programmatico provider di identità per pool di utenti. Per ulteriori informazioni, consulta [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html).

Le opzioni di provider di identità supportate includono provider di social network come Facebook, Google e Amazon, oltre a provider OpenID Connect (OIDC) e SAML 2.0. Prima di iniziare, configurati con le credenziali amministrative per il tuo IdP. Per ogni tipo di provider, dovrai registrare la tua applicazione, ottenere le credenziali necessarie e quindi configurare i dettagli del provider nel tuo pool di utenti. Gli utenti possono quindi registrarsi e accedere all'applicazione con gli account esistenti dei provider di identità connessi.

Il menu **Social e provider esterni** in **Autenticazione** aggiunge e aggiorna il pool di utenti IdPs. Per ulteriori informazioni, consulta [Accesso al pool di utenti con provider di identità di terze parti](cognito-user-pools-identity-federation.md).

**Topics**
+ [Configurazione dell'accesso dell'utente con un IdP social](#cognito-user-pools-facebook-provider)
+ [Configurazione dell'accesso utente con un IdP OIDC](#cognito-user-pools-oidc-providers)
+ [Configurazione dell'accesso utente con un IdP SAML](#cognito-user-pools-saml-providers)

## Configurazione dell'accesso dell'utente con un IdP social
<a name="cognito-user-pools-facebook-provider"></a>

Puoi utilizzare la federazione per i bacini d'utenza di Amazon Cognito per integrare i provider di identità social, come Facebook, Google e Login with Amazon.

Per aggiungere un provider di identità social, per prima cosa, crea un account per sviluppatori con il provider di identità. Dopo aver creato un account per sviluppatori, registra l'app con il provider di identità. Il provider di identità crea un'ID e un segreto per l'app, i cui valori devono essere configurati nei bacini d'utenza di Amazon Cognito.
+ [Piattaforma di identità Google](https://developers.google.com/identity/)
+ [Facebook per sviluppatori](https://developers.facebook.com/docs/facebook-login)
+ [Login with Amazon](https://developer.amazon.com/login-with-amazon)
+ [Accedi con Apple](https://developer.apple.com/sign-in-with-apple/)

**Per integrare l'accesso utente con un IdP social**

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

1. Nel pannello di navigazione, scegli **User Pools** (Bacini d'utenza) e seleziona i bacini d'utenza che intendi modificare.

1. Scegli il menu **Social e provider esterni**.

1. Scegli l'opzione **Add an identity provider** (Aggiungi un provider di identità) oppure seleziona il provider di identità **Facebook**, **Google**, **Amazon** o **Apple** che hai configurato, individua la voce **Identity provider information** (Informazioni provider di identità) e seleziona **Edit** (Modifica). Per ulteriori informazioni su come aggiungere provider di identità social consulta [Utilizzo di provider di identità social con un pool di utenti](cognito-user-pools-social-idp.md).

1. Inserisci le informazioni del tuo provider di identità social completando uno dei seguenti passaggi, in base alla tua scelta di IdP:  
**Per Facebook, Google e Login with Amazon:**  
Inserisci l'ID dell'app e il segreto app ricevuti al momento della creazione dell'app client.  
**Accedi con Apple**  
Inserisci l'ID del servizio fornito ad Apple, nonché l'ID del team, l'ID della chiave e la chiave privata ricevuti quando è stata creato il client dell'app.

1. Nel campo **Authorized scopes** (Ambiti autorizzati), inserisci i nomi degli ambiti dei provider di identità social che intendi mappare agli attributi del bacino d'utenza. Gli ambiti definiscono gli attributi utente, ad esempio nome ed indirizzo e-mail con cui intendi accedere con l'App. Quando inserisci gli ambiti, usa le seguenti linee guida in base alla tua scelta di IdP:
   + **Facebook**: ambiti separati da virgole. Esempio:

     `public_profile, email`
   + **Google, Login with Amazon e Accedi con Apple**: ambiti separati da spazi. Esempio:
     + **Google:** `profile email openid`
     + **Login with Amazon:** `profile postal_code`
     + **Accedi con Apple:** `name email`
**Nota**  
Per il servizio Accedi con Apple (console), utilizza le caselle di controllo per selezionare gli ambiti.

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

1. Dal menu **App client**, scegli un client per l'app dall'elenco, quindi seleziona **Modifica**. Aggiungi il nuovo provider di identità social al client dell'App alla voce **Identity providers** (Provider di identità).

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

Per ulteriori informazioni sui social IdPs, consulta[Utilizzo di provider di identità social con un pool di utenti](cognito-user-pools-social-idp.md).

## Configurazione dell'accesso utente con un IdP OIDC
<a name="cognito-user-pools-oidc-providers"></a>

Puoi integrare l'accesso degli utenti tramite un provider di identità OpenID Connect (OIDC), ad esempio Salesforce o Ping Identity.

**Per aggiungere un provider OIDC a un pool di utenti**

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

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** e seleziona **Aggiungi un provider di identità**.

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

1. Inserisci un nome univoco nel campo **Provider name** (Nome provider).

1. Inserisci l'ID client che hai ricevuto dal tuo provider nel campo **Client ID** (ID client).

1. Inserisci il segreto client che hai ricevuto dal tuo provider nel campo **Client secret** (Segreto client).

1. 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).

   All'utente viene richiesto il consenso a fornire questi attributi alla tua applicazione.

1. Scegli un **Attribute request method** (Metodo della richiesta di attributo) per fornire ad Amazon Cognito il metodo HTTP (GET o POST) da utilizzare per recuperare i dettagli dell'utente dall'endpoint **userInfo** gestito dal tuo provider.

1. Scegli un **Setup method** (Metodo di impostazione) per recuperare gli endpoint OpenID Connect dall'opzione **Auto fill through issuer URL** (Riempimento automatico attraverso URL dell'emittente) o da **Manual input** (Inserimento manuale). Utilizza **la compilazione automatica tramite l'URL dell'emittente** quando il provider dispone di un `.well-known/openid-configuration` endpoint pubblico in cui Amazon Cognito può recuperare URLs gli endpoint`token`,, `userInfo` e. `authorization` `jwks_uri`

1. Inserisci l'URL dell'emittente o`authorization`, `token``userInfo`, e l'`jwks_uri`endpoint del tuo URLs IdP.
**Nota**  
È possibile utilizzare solo i numeri di porta 443 e 80 con rilevamento, compilazione automatica e immissione manuale. URLs Gli accessi utente non riescono se il provider OIDC utilizza porte TCP non standard.  
L'URL dell'emittente deve iniziare con `https://` e non deve terminare con un carattere `/`. Ad esempio, Salesforce usa questo URL:  
`https://login.salesforce.com`   
Il `openid-configuration` documento associato all'URL dell'emittente deve fornire HTTPS URLs per i seguenti valori:`authorization_endpoint`,`token_endpoint`, `userinfo_endpoint` e. `jwks_uri` Allo stesso modo, quando scegli **l'immissione manuale**, puoi inserire solo HTTPS URLs.

1. Per impostazione predefinita, la richiesta OIDC **sub** viene mappata all'attributo del bacino d'utenza **Username**. Puoi mappare altre [richieste](https://openid.net/specs/openid-connect-basic-1_0.html#StandardClaims) OIDC agli attributi del bacino d'utenza. Inserisci la richiesta OIDC e seleziona l'attributo del bacino d'utenza corrispondente dall'elenco a discesa. Ad esempio, l'indirizzo **e-mail** della richiesta viene spesso mappato all'attributo del bacino d'utenza **Email** (E-mail).

1. Mappa gli attributi aggiuntivi dal provider di identità al bacino d'utenza. Per ulteriori informazioni, consulta la sezione [Specificazione di mappature degli attributi del provider di identità per il bacino d'utenza](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-specifying-attribute-mapping.html).

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

1. Dal menu **App client**, seleziona un app client dall'elenco. Per aggiungere il nuovo provider di identità SAML al client dell'app, vai alla scheda **Pagine di accesso** e seleziona **Modifica** nella **configurazione delle pagine di accesso gestite**.

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

Per ulteriori informazioni su OIDC IdPs, consulta. [Utilizzo di provider di identità OIDC con un pool di utenti](cognito-user-pools-oidc-idp.md)

## Configurazione dell'accesso utente con un IdP SAML
<a name="cognito-user-pools-saml-providers"></a>

Puoi utilizzare la federazione per il bacino d'utenza di Amazon Cognito per l'integrazione con un provider di identità (IdP) SAML. Puoi fornire un documento di metadati, o caricando il file oppure inserendo un URL di endpoint del documento di metadati. Per informazioni su come ottenere documenti di metadati per IdPs SAML di terze parti, consulta. [Configurazione del tuo provider di identità SAML di terze parti](cognito-user-pools-integrating-3rd-party-saml-providers.md)

**Per configurare un provider di identità SAML 2.0 nel bacino d'utenza**

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

1. Scegli **User Pools** (Pool di utenti).

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 esterno** e seleziona **Aggiungi un provider di identità**.

1. Scegli un provider di identità **SAML**.

1. Inserisci gli **Identifiers** (Identificatori) separati da virgole. Un identificatore indirizza Amazon Cognito a controllare l'indirizzo e-mail di accesso dell'utente e poi indirizza l'utente al provider che corrisponde al suo dominio..

1. Scegli **Add sign-out flow** (Aggiungi flusso di disconnessione) se desideri che Amazon Cognito invii richieste di disconnessione firmate al tuo provider quando un utente si disconnette. Configura il tuo provider di identità SAML 2.0 per inviare risposte di disconnessione all'`https://mydomain.auth.us-east-1.amazoncognito.com/saml2/logout`endpoint creato da Amazon Cognito quando configuri l'accesso gestito. L'endpoint `saml2/logout` utilizza POST vincolanti.
**Nota**  
Se selezioni questa opzione e il provider di identità SAML si aspetta una richiesta di disconnessione con firma, è necessario configurare anche il certificato di firma fornito da Amazon Cognito con il tuo IdP SAML.   
L'IdP SAML elabora la richiesta di disconnessione con firmata e disconnette l'utente dalla sessione Amazon Cognito.

1. Seleziona una **Metadata document source (Fonte del documento di metadati)**. Se il tuo provider di identità fornisce metadati SAML a un URL pubblico, puoi scegliere l'opzione **Metadata document URL (URL del documento di metadati)** e inserire l'URL pubblico. In caso contrario, seleziona **Upload metadata document** (Carica documento di metadati) e seleziona un file di metadati scaricato dal tuo provider in precedenza.
**Nota**  
Se il provider ha un endpoint pubblico, suggeriamo di fornire l'URL di un documento di metadati anziché caricare un file. Se utilizzi l'URL, Amazon Cognito aggiorna automaticamente i metadati. In genere, l'aggiornamento dei metadati avviene ogni 6 ore oppure prima della scadenza dei metadati, in base a ciò che avviene prima.

1. Scegli l'opzione **Map attributes between your SAML provider and your app** (Mappa gli attributi tra il provider SAML e la tua app) per mappare gli attributi del provider SAML al profilo utente nel bacino d'utenza. Includi gli attributi richiesti del bacino d'utenza nella mappa degli attributi. 

   Ad esempio, quando seleziona l'`email` dell'**Attributo del bacino d'utenza**, inserisci il nome dell'attributo SAML così come compare nell'asserzione SAML dal provider di identità. Il tuo provider di identità potrebbe offrire esempi di asserzioni SAML come riferimento. Alcuni provider di identità utilizzano nomi semplici, come `email`, mentre altri utilizzano attributi con formato URL simili a questo:

   ```
   http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
   ```

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

**Nota**  
Se visualizzi `InvalidParameterException` durante la creazione di un provider di identità SAML con un URL di endpoint di metadati HTTPS, assicurati che l'endpoint di metadati abbia l'SSL configurato correttamente e che vi sia associato un certificato SSL valido. Un esempio di tale eccezione potrebbe essere «Errore nel recupero dei metadati da». *<metadata endpoint>*

**Per configurare l'IdP SAML per l'aggiunta di un certificato di firma**
+ Per ottenere il certificato contenente la chiave pubblica utilizzata dall'IdP per verificare la richiesta di disconnessione firmata, procedi come segue:

  1. Vai al menu **Social e provider esterni** del tuo pool di utenti.

  1. Seleziona il tuo provider SAML,

  1. Scegli **Visualizza certificato di firma**.

Per ulteriori informazioni su SAML, IdPs consulta[Utilizzo di provider di identità SAML con un pool di utenti](cognito-user-pools-saml-idp.md).

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

Gli utenti di app Web e per dispositivi mobili possono accedere tramite provider di identità social (IdP) come Facebook, Google, Amazon e Apple. Con l'interfaccia utente Web ospitata integrata, Amazon Cognito fornisce la gestione dei token per gli utenti autenticati. In questo modo, i sistemi back-end possono standardizzare un set di token del bacino d'utenza. È necessario abilitare l'accesso gestito per l'integrazione con i provider di identità social supportati. Quando Amazon Cognito crea le tue pagine di accesso gestite, crea endpoint OAuth 2.0 che Amazon Cognito, il tuo OIDC e i social network utilizzano per lo scambio di informazioni. IdPs Per ulteriori informazioni, consulta la [Documentazione di riferimento delle API Auth dei bacini d'utenza di Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html).

Puoi aggiungere un IdP social in oppure puoi utilizzare Console di gestione AWS la AWS CLI o l'API Amazon Cognito. 

**Nota**  
L'accesso tramite terze parti (federazione) è disponibile per i bacini d'utenza Amazon Cognito. Questa funzione è indipendente dalla federazione tramite pool di identità di Amazon Cognito (identità federate).

**Topics**
+ [Configura un account e un'applicazione social IdP per sviluppatori](#cognito-user-pools-social-idp-step-1)
+ [Configura il tuo pool di utenti con un IdP social](#cognito-user-pools-social-idp-step-2)
+ [Test della configurazione dell'IdP social](#cognito-user-pools-social-idp-step-3)

## Configura un account e un'applicazione social IdP per sviluppatori
<a name="cognito-user-pools-social-idp-step-1"></a>

Prima di creare un IdP social con Amazon Cognito, è necessario registrare l'applicazione con l'IdP social in modo da ricevere un ID client e un segreto client.

------
#### [ Facebook ]

Per le informazioni più recenti sulla configurazione degli account e dell'autenticazione degli sviluppatori Meta, consulta [Meta App Development](https://developers.facebook.com/docs/development).

**Come registrare un'applicazione con Facebook/Meta**

1. Creazione di un [account sviluppatore con Facebook](https://developers.facebook.com/docs/facebook-login).

1. [Accedi](https://developers.facebook.com/) con le tue credenziali di Facebook.

1. Nel menu **My Apps** (Le mie app), scegli **Create New App** (Crea nuova app).

1. Inserisci un nome per l'app Facebook, quindi scegli **Create App ID** (Crea ID dell'app).

1. Nella barra di navigazione a sinistra, scegli **Settings** (Impostazioni) e successivamente **Basic** (Di base).

1. Prendi nota di **ID app** e **Segreto app**. Li utilizzerai nella sezione successiva.

1. Nella parte inferiore della pagina, scegli **\$1Add Platform** (\$1Aggiungi piattaforma).

1. Scegli **Website** (Sito Web).

1. Alla voce **Website** (Sito Web), inserisci il percorso della pagina di accesso per l'app in **URL del sito**.

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

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

1. Inserisci il percorso della directory principale del dominio del bacino d'utenza in **App Domains** (Domini app).

   ```
   https://mydomain.auth.us-east-1.amazoncognito.com
   ```

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

1. Nella barra di navigazione, scegli **Add Products** (Aggiungi prodotti) e successivamente **Set up** (Imposta) per il prodotto **Facebook Login** (Accedi con Facebook).

1. Nella barra di navigazione, scegli **Facebook Login** (Accedi con Facebook) e successivamente **Settings** (Impostazioni).

   **Inserisci il percorso dell'`/oauth2/idpresponse`endpoint per il dominio del tuo pool di utenti in Valid Redirect. OAuth URIs**

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

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

------
#### [ Login with Amazon ]

Per le informazioni più recenti sulla configurazione degli account sviluppatore e sull'autenticazione di Login with Amazon, consulta [Login with Amazon Documentation](https://developer.amazon.com/docs/login-with-amazon/documentation-overview.html).

**Come registrare un'applicazione con Login with Amazon**

1. Creazione di un [account sviluppatore con Amazon](https://developer.amazon.com/login-with-amazon).

1. [Accedi](https://developer.amazon.com/lwa/sp/overview.html) con le tue credenziali di Amazon.

1. È necessario creare un profilo di sicurezza Amazon per ricevere l'ID client di Amazon e il segreto client.

   Nella barra di navigazione disponibile nella parte superiore della pagina, scegli **Apps and Services** (App e servizi) e successivamente **Login with Amazon** (Accedi con Amazon).

1. Scegli **Create a Security Profile** (Crea un profilo di sicurezza).

1. Digita un **Security Profile Name** (nome profilo sicurezza), una **Security Profile Description** (descrizione profilo sicurezza) e un **Consent Privacy Notice URL** (URL consenso informativa privacy).

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

1. Scegli **Client ID** (ID client) e **Client Secret** (Segreto client) per mostrare i dati relativi. Li utilizzerai nella sezione successiva.

1. Passa il mouse sull'icona a forma di ingranaggio e scegli **Web Settings** (Impostazioni Web), quindi Scegli **Edit** (Modifica).

1. Inserisci il dominio del bacino d'utenza nel campo **Allowed Origins** (origini consentite).

   ```
   https://mydomain.auth.us-east-1.amazoncognito.com
   ```

1. Inserisci il dominio del pool di utenti con l'`/oauth2/idpresponse`endpoint in **Allowed Return URLs**.

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

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

------
#### [ Google ]

Per ulteriori informazioni sulla OAuth versione 2.0 nella piattaforma Google Cloud, consulta [Informazioni sull'autenticazione e l'autorizzazione](https://developers.google.com/workspace/guides/auth-overview) nella documentazione di Google Workspace for Developers.

**Come registrare un'applicazione con Google**

1. Creazione di un [account sviluppatore con Google](https://developers.google.com/identity).

1. Accedi alla [console Piattaforma Google Cloud](https://console.cloud.google.com/home/dashboard).

1. Nella barra di navigazione in alto, scegli **Select a project** (Seleziona un progetto). Se hai già un progetto nella piattaforma Google, nel menu viene visualizzato il tuo progetto predefinito.

1. Scegli **Nuovo progetto**.

1. Immetti un nome per il progetto e scegli **Crea**.

1. Nella barra di navigazione a sinistra, scegli **APIs Servizi**, quindi schermata di **consenso Oauth**.

1. Inserisci le informazioni sull'app, un **App domain** (Dominio dell'app), gli **Authorized domains** (Domini autorizzati) e le **Developer contact information** (Informazioni di contatto dello sviluppatore). Gli **Authorized domains** (Domini autorizzati) devono includere `amazoncognito.com` e la radice del dominio personalizzato, ad esempio `example.com`. Seleziona **Salva e continua**.

1. 1. In **Ambiti**, scegli **Aggiungi o rimuovi ambiti** e scegli almeno i seguenti ambiti. OAuth 

   1. `.../auth/userinfo.email`

   1. `.../auth/userinfo.profile`

   1. openid

1. In **Test users** (Utenti di test), scegli **Add users** (Aggiungi utenti). Inserisci l'indirizzo e-mail e qualsiasi altro utente di test autorizzato, quindi scegli **SAVE AND CONTINUE** (Salva e continua).

1. **Espandi nuovamente la barra di navigazione a sinistra **APIs e scegli Servizi**, quindi Credenziali.** 

1. Scegli **CREATE CREDENTIALS**, quindi ID **OAuth cliente**.

1. Scegli un **Application type** (Tipo di applicazione) e assegna un **Name** (Nome) al client.

1. In ** JavaScript Origini autorizzate**, scegli **AGGIUNGI URI**. Immetti il dominio del pool di utenti.

   ```
   https://mydomain.auth.us-east-1.amazoncognito.com
   ```

1. In **Reindirizzamento autorizzato URIs**, scegli **AGGIUNGI URI**. Inserisci il percorso dell'endpoint `/oauth2/idpresponse` del dominio del pool di utenti.

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

1. Scegli **CREATE** (Crea).

1. Memorizza in modo sicuro i valori visualizzati da Google in **Your client ID** (Il tuo ID client) e **Your client secret** (Il tuo segreto del client). Fornisci questi valori ad Amazon Cognito quando aggiungi un gestore dell'identità digitale (IdP) Google.

------
#### [ Sign in with Apple ]

Per la maggior parte delle up-to-date informazioni sulla configurazione dell'accesso con Apple, consulta [Configurazione dell'ambiente per l'accesso con Apple nella documentazione](https://developer.apple.com/documentation/signinwithapple/configuring-your-environment-for-sign-in-with-apple) per gli sviluppatori di Apple.

**Come registrare un'applicazione con Sign in with Apple (SIWA)**

1. Creazione di un [account sviluppatore con Apple](https://developer.apple.com/programs/enroll/).

1. [Accedi](https://developer.apple.com/account/#/welcome) con le tue credenziali Apple.

1. Sulla barra di navigazione a sinistra, scegli **Certificates, Identifiers & Profiles** (Certificati, identificatori e profili).

1. Nel riquadro di navigazione a sinistra, scegli **Identifiers** (Identificatori).

1. Nella pagina **Identifiers** (Identificatori), scegli l'icona **\$1**.

1. **Nella pagina **Registra un nuovo identificatore**, scegli **App IDs**, quindi scegli Continua.**

1. Nella pagina **Select a type** (Seleziona un tipo), scegli **App**, quindi **Continue** (Continua).

1. Nella pagina **Register an App ID** (Registra un'ID app), procedi come indicato di seguito:

   1. In **Description** (Descrizione), inserisci una descrizione.

   1. In **App ID Prefix** (Prefisso ID app), inserisci un **Bundle ID** ID bundle. Prendi nota del valore alla voce **Prefisso ID app**. Ne avrai bisogno per configurare Apple come provider di identità in [Configura il tuo pool di utenti con un IdP social](#cognito-user-pools-social-idp-step-2).

   1. In **Funzionalità**, scegli **Accedi con Apple**, quindi scegli **Modifica**.

   1. **Nella pagina Accedi con Apple: configurazione dell'ID app****, scegli di configurare l'app come principale o raggruppata con altre app IDs, quindi scegli Salva.**

   1. Scegli **Continua**.

1. Nella pagina **Confirm your App ID** (Conferma l'ID app), scegli **Register** (Registra).

1. Nella pagina **Identifiers** (Identificatori), scegli l'icona **\$1**.

1. **Nella pagina **Registra un nuovo identificatore**, scegli **Servizi IDs**, quindi scegli Continua.**

1. Nella pagina **Register a Services ID** (Registra un ID servizi), procedi nel modo seguente:

   1. In **Description (Descrizione)**, digitare una descrizione.

   1. In **Identifier (Identificatore)**, digitare un identificatore. Prendi nota dell'ID servizi poiché ne avrai bisogno per configurare Apple come provider di identità in [Configura il tuo pool di utenti con un IdP social](#cognito-user-pools-social-idp-step-2).

   1. Scegli **Continue** (Continua), quindi scegli **Register** (Registra).

1. Scegli l'ID servizi appena creato dalla pagina Identificatori.

   1. Scegli **Sign In with Apple** (Accedi con Apple), quindi scegli **Configure** (Configura).

   1. Nella pagina **Web Authentication Configuration** (Configurazione autenticazione Web), seleziona l'ID dell'app creato in precedenza come **Primary App ID** (ID app principale). 

   1. Scegli l'icona **\$1** accanto a **Sito Web URLs**. 

   1. In **Domains and subdomains** (Domini e sottodomini), inserisci il dominio del pool di utenti senza prefisso `https://`.

      ```
      mydomain.auth.us-east-1.amazoncognito.com
      ```

   1. In **Return URLs**, inserisci il percorso dell'`/oauth2/idpresponse`endpoint del dominio del tuo pool di utenti.

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

   1. Scegli **Next** (Successivo), quindi **Done** (Fatto). Non è necessario verificare il dominio.

   1. Scegli **Continua**, quindi **Salva**.

1. Nel riquadro di navigazione a sinistra, scegli **Keys** (Chiavi).

1. Nella pagina **Keys** (Chiavi), scegli l'icona **\$1**.

1. Nella pagina **Register a New Key**, (Registra una nuova chiave) procedi nel modo seguente:

   1. Alla voce **Key Name (nome chiave)**, digita un nome della chiave. 

   1. Scegli **Accedi con Apple**, quindi scegli **Configura**.

   1. Nella pagina **Configure Key** (Configura chiave) seleziona l'ID dell'app creato in precedenza come **Primary App ID** (ID app principale). Scegli **Save** (Salva).

   1. Scegli **Continua**, quindi scegli **Registra**.

1. Nella pagina **Download Your Key (download della chiave)**, scegli **Download** per scaricare la chiave privata, quindi prendi nota dell' **ID chiave** visualizzato, poi scegli **Done (Fine)**. Avrai bisogno di questa chiave privata e del valore di **Key ID** (ID chiave) visualizzato in questa pagina dopo aver scelto Apple come provider di identità in [Configura il tuo pool di utenti con un IdP social](#cognito-user-pools-social-idp-step-2).

------

## Configura il tuo pool di utenti con un IdP social
<a name="cognito-user-pools-social-idp-step-2"></a>

**Per configurare un pool di utenti (social IdP) con Console di gestione AWS**

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

1. Scegli **User Pools** (Pool di utenti).

1. Scegli un pool di utenti esistente dall'elenco o crea un pool di utenti.

1. Scegli il menu **Social e provider esterni**, quindi seleziona **Aggiungi un provider di identità**.

1. Scegli un provider di identità social: **Facebook**, **Google**, **Login with Amazon** o **Accedi con Apple**.

1. Scegli uno dei seguenti passaggi, in base al provider di identità social che hai selezionato:
   + **Google** e **Login with Amazon**: inserisci l'**ID del client dell'app** e il **segreto client dell'app** generato nella sezione precedente.
   + **Facebook**: inserisci l'**ID del client dell'app** e il **segreto del client dell'app** generato nella sezione precedente, quindi scegli una versione API (ad esempio, versione 2.12). Ti consigliamo di selezionare la versione più recente possibile in quanto ogni versione dell'API di Facebook ha un ciclo di vita e una data di deprecazione. Gli ambiti e gli attributi di Facebook possono variare a seconda delle versioni dell'API. Ti consigliamo di testare l'accesso alla tua identità social con Facebook per assicurarti che la federazione funzioni come previsto.
   + **Accedi con Apple**: inserisci l'**ID servizio**, l'**ID team**, l'**ID chiave** e la **chiave privata** generati nella sezione precedente.

1. Inserisci i nomi degli **ambiti autorizzati** che intendi utilizzare. Gli ambiti definiscono a quali attributi utente (ad esempio `name` e `email`) intendi accedere con l'app. Per Facebook, devono essere separati da virgole. Per Google e Login with Amazon, devono essere separati da spazi. Per Sign in with Apple, seleziona le caselle di controllo per gli ambiti cui desideri accedere.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/cognito/latest/developerguide/cognito-user-pools-social-idp.html)

   All'utente dell'app viene richiesto il consenso a fornire questi attributi all'app. Per ulteriori informazioni sugli ambiti dei provider di social, consulta la documentazione di Google, Facebook, Login with Amazon e Accedi con Apple. 

   Nel caso di Accedi con Apple, di seguito sono riportati scenari utente in cui gli ambiti potrebbero non essere restituiti:
   + Un utente finale rileva degli errori dopo aver chiuso la pagina di accesso di Apple (può derivare da errori interni di Amazon Cognito o da un errore di scrittura dello sviluppatore)
   + L'identificatore ID del servizio viene utilizzato tra pool di utenti e and/or altri servizi di autenticazione
   + Uno sviluppatore aggiunge ambiti dopo che l'utente finale ha effettuato l'accesso in precedenza (non viene recuperata nessuna nuova informazione)
   + Uno sviluppatore elimina l'utente e quindi l'utente effettua nuovamente l'accesso rimuovendo l'app dal profilo dell'ID Apple

1. Mappa gli attributi dal provider di identità al bacino d'utenza. Per ulteriori informazioni, vedi [Specificazione di mappature degli attributi del provider di identità per il pool di utenti](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-specifying-attribute-mapping.html).

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

1. Dal menu **App client**, seleziona un client di app dall'elenco. Per aggiungere il nuovo provider di identità social al client dell'app, vai alla scheda **Pagine di accesso** e seleziona **Modifica** nella **configurazione delle pagine di accesso gestite**.

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

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

Nella tua applicazione, devi richiamare un browser nel client dell'utente in modo che possa accedere con il suo provider di social network. Prova l'accesso con il tuo social 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 a un provider di social network 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=Facebook|Google|LoginWithAmazon|SignInWithApple&response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com
```

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

[Puoi scegliere di fare in modo che gli utenti delle tue app Web e mobili accedano tramite un provider di identità SAML (IdP) come [Microsoft Active Directory Federation Services (ADFS](https://msdn.microsoft.com/en-us/library/bb897402.aspx)) o Shibboleth.](http://www.shibboleth.net/) È necessario selezionare un provider di identità SAML che supporti lo [standard SAML 2.0](http://saml.xml.org/saml-specifications).

Con l'accesso gestito, Amazon Cognito autentica gli utenti IdP locali e di terze parti ed emette token web JSON (). JWTs Con i token emessi da Amazon Cognito, puoi consolidare più fonti di identità in uno standard OpenID Connect (OIDC) universale per tutte le tue app. Amazon Cognito può elaborare le asserzioni SAML dei tuoi provider di terze parti in quello standard SSO. Puoi creare e gestire un IdP SAML nell'API Console di gestione AWS dei pool di utenti di Amazon Cognito, tramite o con AWS CLI l'API dei pool di utenti. Per creare il tuo primo IdP SAML in, Console di gestione AWS consulta. [Aggiungere e gestire i provider di identità SAML in un pool di utenti](cognito-user-pools-managing-saml-idp.md)

![\[Panoramica dell'autenticazione con accesso SAML\]](http://docs.aws.amazon.com/it_it/cognito/latest/developerguide/images/scenario-authentication-saml.png)


**Nota**  
La federazione con accesso tramite un IdP di terze parti è una funzionalità dei pool di utenti di Amazon Cognito. I pool di identità di Amazon Cognito, a volte chiamati identità federate di Amazon Cognito, sono un'implementazione della federazione che devi configurare separatamente in ogni pool di identità. Un pool di utenti può essere un IdP di terze parti per un pool di identità. Per ulteriori informazioni, consulta [Pool di identità di Amazon Cognito](cognito-identity.md).

## Riferimento rapido per la configurazione IdP
<a name="cognito-user-pools-saml-idp-reference"></a>

Devi configurare il tuo IdP SAML per accettare richieste e inviare risposte al tuo pool di utenti. La documentazione per il tuo IdP SAML conterrà informazioni su come aggiungere il tuo pool di utenti come relying party o applicazione per il tuo IdP SAML 2.0. La documentazione che segue fornisce i valori da fornire per l'ID dell'entità SP e l'URL dell'assertion consumer service (ACS).Riferimento rapido ai valori SAML del pool di utenti

**ID dell'entità SP**  

```
urn:amazon:cognito:sp:us-east-1_EXAMPLE
```

**URL ACS**  

```
https://Your user pool domain/saml2/idpresponse
```

È necessario configurare il pool di utenti per supportare il proprio provider di identità. I passaggi di alto livello per aggiungere un IdP SAML esterno sono i seguenti.

1. Scarica i metadati SAML dal tuo IdP o recupera l'URL del tuo endpoint di metadati. Per informazioni, consulta [Configurazione del tuo provider di identità SAML di terze parti](cognito-user-pools-integrating-3rd-party-saml-providers.md).

1. Aggiungi un nuovo IdP al tuo pool di utenti. Carica i metadati SAML o fornisci l'URL dei metadati. Per informazioni, consulta [Aggiungere e gestire i provider di identità SAML in un pool di utenti](cognito-user-pools-managing-saml-idp.md).

1. Assegna l'IdP ai client della tua app. Per informazioni, consulta [Impostazioni specifiche dell'applicazione con client di app](user-pool-settings-client-apps.md).

**Topics**
+ [Riferimento rapido per la configurazione IdP](#cognito-user-pools-saml-idp-reference)
+ [Cose da sapere su SAML IdPs nei pool di utenti di Amazon Cognito](cognito-user-pools-saml-idp-things-to-know.md)
+ [Distinzione tra maiuscole e minuscole dei nomi utente SAML](#saml-nameid-case-sensitivity)
+ [Configurazione del tuo provider di identità SAML di terze parti](cognito-user-pools-integrating-3rd-party-saml-providers.md)
+ [Aggiungere e gestire i provider di identità SAML in un pool di utenti](cognito-user-pools-managing-saml-idp.md)
+ [Avvio della sessione SAML nei bacini d'utenza di Amazon Cognito](cognito-user-pools-SAML-session-initiation.md)
+ [Disconnessione degli utenti SAML con accesso singolo](cognito-user-pools-saml-idp-sign-out.md)
+ [Firma e crittografia SAML](cognito-user-pools-SAML-signing-encryption.md)
+ [Nomi e identificatori dei provider di identità SAML](cognito-user-pools-managing-saml-idp-naming.md)

# Cose da sapere su SAML IdPs nei pool di utenti di Amazon Cognito
<a name="cognito-user-pools-saml-idp-things-to-know"></a>

L'implementazione di un IdP SAML 2.0 comporta alcuni requisiti e restrizioni. Fai riferimento a questa sezione quando implementi il tuo IdP. Troverai anche informazioni utili per la risoluzione degli errori durante la federazione SAML con un pool di utenti.

**Amazon Cognito elabora le asserzioni SAML per te**  
I pool di utenti di Amazon Cognito supportano la federazione SAML 2.0 con endpoint POST-binding. In questo modo, l'app non avrà bisogno di recuperare o analizzare le risposte dell'asserzione SAML poiché il bacino d'utenza riceve la risposta SAML direttamente dal provider di identità tramite un agente utente. Il bacino d'utenza si comporta da provider di servizi (SP) per conto della tua applicazione. [Amazon Cognito supporta il single sign-on (SSO) avviato da SP e IdP come descritto nelle sezioni 5.1.2 e 5.1.4 della panoramica tecnica SAML V2.0.](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html)

**Fornisci un certificato di firma IdP valido**  
Il certificato di firma nei metadati del tuo provider SAML non deve essere scaduto quando configuri l'IdP SAML nel tuo pool di utenti.

**I pool di utenti supportano più certificati di firma**  
Quando l'IdP SAML include più di un certificato di firma nei metadati SAML, al momento dell'accesso il pool di utenti determina che l'asserzione SAML è valida se corrisponde a qualsiasi certificato nei metadati SAML. Ogni certificato di firma non deve contenere più di 4.096 caratteri.

**Mantenere il parametro dello stato del relè**  
Amazon Cognito e l'IdP SAML gestiscono le informazioni sulla sessione con un parametro `relayState`.  

1. Amazon Cognito supporta i valori `relayState` superiori a 80 byte. Mentre le specifiche SAML affermano che il valore `relayState` "non deve superare 80 byte di lunghezza", la pratica attuale del settore spesso si discosta da questo comportamento. Di conseguenza, il rifiuto `relayState` di valori superiori a 80 byte interromperà molte integrazioni di provider SAML standard.

1. Il `relayState` token è un riferimento opaco alle informazioni sullo stato gestite da Amazon Cognito. Amazon Cognito non garantisce i contenuti del parametro `relayState`. Non analizza i contenuti in modo tale che l'app dipende dal risultato. Per ulteriori informazioni consulta le [Specifiche SAML 2.0](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).

**Identifica l'endpoint ACS**  
Il provider di identità SAML richiede che venga impostato un endpoint assertion consumer. L’IdP reindirizza gli utenti a questo endpoint con la relativa asserzione SAML. Configura il seguente endpoint nel dominio del pool di utenti per il binding SAML 2.0 POST nel gestore dell'identità digitale SAML.  

```
https://Your user pool domain/saml2/idpresponse
With an Amazon Cognito domain:
https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse
With a custom domain:
https://auth.example.com/saml2/idpresponse
```
Per ulteriori informazioni sui domini del pool di utenti, consulta l'articolo [Configurazione di un dominio di bacino d'utenza](cognito-user-pools-assign-domain.md).

**Nessuna asserzione ripetuta**  
Non puoi ripetere né *riprodurre* un'asserzione SAML sul tuo endpoint `saml2/idpresponse` Amazon Cognito. Un'asserzione SAML riprodotta dispone di un ID asserzione che duplica l'ID di una risposta IdP precedente.

**L'ID del pool di utenti è l'ID dell'entità SP**  
È necessario fornire all'IdP l'ID del pool di utenti nel service provider (SP)`urn`, chiamato anche *URI del pubblico* o ID dell'*entità SP*. Il formato dell’URI audience per il pool di utenti è il seguente.  

```
urn:amazon:cognito:sp:us-east-1_EXAMPLE
```
Puoi trovare l'ID del tuo pool di utenti nella sezione **Panoramica del pool di utenti** nella console [Amazon Cognito](https://console.aws.amazon.com/cognito/home).

**Mappa tutti gli attributi obbligatori**  
Configura l’IdP SAML per fornire i valori per tutti gli attributi impostati come obbligatori nel pool di utenti. Ad esempio, `email` è un attributo obbligatorio comune per i pool di utenti. Prima che gli utenti possano effettuare l’accesso, le asserzioni IdP SAML devono includere un’attestazione mappata all'**attributo pool di utenti** `email`. Per ulteriori informazioni sulla mappatura attributi, consultare[Mappatura degli attributi IdP su profili e token](cognito-user-pools-specifying-attribute-mapping.md).

**Il formato di asserzione ha requisiti specifici**  
Il tuo IdP SAML deve includere le seguenti affermazioni nell'asserzione SAML.  
+ Un reclamo. `NameID` Amazon Cognito associa un'asserzione SAML all'utente di destinazione tramite. `NameID` In caso di `NameID` modifiche, Amazon Cognito considera l'affermazione come riferita a un nuovo utente. L'attributo impostato `NameID` nella configurazione IdP deve avere un valore persistente. Per assegnare agli utenti SAML un profilo utente coerente nel tuo pool di utenti, assegna la tua `NameID` dichiarazione in base a un attributo con un valore che non cambia.

  ```
  <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:persistent">
    carlos
  </saml2:NameID>
  ```

  Una `Format` `NameID` dichiarazione del tuo IdP `urn:oasis:names:tc:SAML:1.1:nameid-format:persistent` indica che il tuo IdP sta passando un valore invariato. Amazon Cognito non richiede questa dichiarazione di formato e assegna un formato se `urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified` il tuo IdP non specifica un formato del claim. `NameID` [Questo comportamento è conforme alla sezione 2.2.2 *Complex Type Name IDType*, della specifica SAML 2.0.](https://groups.oasis-open.org/higherlogic/ws/public/download/35711/sstc-saml-core-errata-2.0-wd-06-diff.pdf/latest)
+ Una richiesta `AudienceRestriction` con un valore `Audience` che imposta l'ID dell'entità SP del pool di utenti come destinazione della risposta.

  ```
  <saml:AudienceRestriction>
    <saml:Audience> urn:amazon:cognito:sp:us-east-1_EXAMPLE
  </saml:AudienceRestriction>
  ```
+ Per il single sign-on avviato da SP, un `Response` elemento con un valore dell'ID della richiesta SAML originale`InResponseTo`.

  ```
  <saml2p:Response Destination="https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse" ID="id123" InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" IssueInstant="Date-time stamp" Version="2.0" xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  ```
**Nota**  
*Le asserzioni SAML avviate da IdP non devono contenere un valore.* `InResponseTo`
+ Un `SubjectConfirmationData` elemento con un `Recipient` valore dell'`saml2/idpresponse`endpoint del pool di utenti e, per SAML avviato da SP, un valore che corrisponde all'ID della richiesta SAML originale. `InResponseTo`

  ```
  <saml2:SubjectConfirmationData InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" NotOnOrAfter="Date-time stamp" Recipient="https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse"/>
  ```

**Richieste di accesso avviate da SP**  
Quando [Endpoint Authorize](authorization-endpoint.md) reindirizza l'utente alla pagina di accesso dell'IdP, Amazon Cognito include una *richiesta SAML* in un parametro URL della richiesta `HTTP GET`. Una richiesta SAML contiene informazioni sul tuo pool di utenti, incluso l'endpoint ACS. Facoltativamente, puoi applicare una firma crittografica a queste richieste.

**Firma le richieste e crittografa le risposte**  
Ogni pool di utenti con un provider SAML genera una coppia di key pair asimmetrica *e un certificato di firma per una firma* digitale che Amazon Cognito assegna alle richieste SAML. Ogni IdP SAML esterno che configuri per supportare la risposta SAML crittografata fa sì che Amazon Cognito generi una nuova coppia di chiavi *e* un nuovo certificato di crittografia per quel provider. Per visualizzare e scaricare i certificati con la chiave pubblica, scegli il tuo IdP nel menu **Social e provider esterni** della console Amazon Cognito.  
Per stabilire un rapporto di fiducia con le richieste SAML provenienti dal tuo pool di utenti, fornisci al tuo IdP una copia del certificato di firma SAML 2.0 del tuo pool di utenti. Il tuo IdP potrebbe ignorare le richieste SAML firmate dal tuo pool di utenti se non configuri l'IdP per accettare le richieste firmate.  

1. Amazon Cognito applica una firma digitale alle richieste SAML che l'utente trasmette al tuo IdP. Il tuo pool di utenti firma tutte le richieste di single logout (SLO) e puoi configurare il tuo pool di utenti per firmare le richieste Single Sign-On (SSO) per qualsiasi IdP esterno SAML. Quando fornisci una copia del certificato, il tuo IdP può verificare l'integrità delle richieste SAML degli utenti. 

1. Il tuo IdP SAML può crittografare le risposte SAML con il certificato di crittografia. Quando configuri un IdP con crittografia SAML, l'IdP deve inviare solo risposte crittografate.

**Codifica caratteri non alfanumerici**  
Amazon Cognito non accetta caratteri UTF-8 a 4 byte come o 😐 che il 𠮷 tuo IdP passa come valore di attributo. Puoi codificare il carattere in Base64, passarlo come testo e quindi decodificarlo nell'app.  
Nell'esempio seguente, la richiesta di attributo non verrà accettata:  

```
<saml2:Attribute Name="Name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
  <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">😐</saml2:AttributeValue>
</saml2:Attribute>
```
Contrariamente all'esempio precedente, la richiesta di attributo seguente verrà accettata:  

```
<saml2:Attribute Name="Name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
  <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">8J+YkA==</saml2:AttributeValue>
</saml2:Attribute>
```

**L'endpoint di metadati deve avere una sicurezza valida a livello di trasporto**  
Se `InvalidParameterException` durante la creazione di un IdP SAML con un URL dell'endpoint di metadati HTTPS vedi, ad esempio, «Errore nel recupero dei metadati *<metadata endpoint>* da», assicurati che l'endpoint di metadati abbia SSL impostato correttamente e che sia associato un certificato SSL valido. [Per ulteriori informazioni sulla convalida dei certificati, consulta Che cos'è un certificato? SSL/TLS ](https://aws.amazon.com/what-is/ssl-certificate/) .

**L'endpoint dei metadati deve essere su una porta TCP standard per HTTP o HTTPS**  
Amazon Cognito accetta solo metadati URLs per i provider SAML sulle porte TCP standard 80 per HTTP e 443 per HTTPS. Come best practice di sicurezza, ospita i metadati SAML su un URL crittografato TLS con il prefisso. `https://` Inserisci i metadati URLs nel formato o. *`http://www.example.com/saml2/metadata.xml`* *`https://www.example.com/saml2/metadata.xml`* La console Amazon Cognito accetta i metadati URLs solo con il prefisso. `https://` Puoi anche configurare i metadati IdP con e. [CreateIdentityProvider[UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)

**I client di app con SAML avviato da IdP possono accedere solo con SAML**  
Quando attivi il supporto per un IdP SAML 2.0 che supporta l'accesso avviato da IdP in un app client, puoi aggiungere solo altro IdPs SAML 2.0 a quell'app client. Ti viene impedito di aggiungere la directory utente nel pool di utenti *e* tutti i provider di identità esterni non SAML a un client di app configurato in questo modo.

**Le risposte di disconnessione devono utilizzare l'associazione POST**  
L'`/saml2/logout`endpoint accetta richieste `LogoutResponse` come`HTTP POST`. I pool di utenti non accettano risposte di disconnessione con `HTTP GET` associazione.

**Rotazione dei certificati di firma dei metadati**  
Amazon Cognito memorizza nella cache i metadati SAML per un massimo di sei ore quando fornisci metadati con un URL. Quando esegui una rotazione dei certificati di firma dei metadati, configura la fonte di metadati per pubblicare *sia i* certificati originali che quelli nuovi per almeno sei ore. Quando Amazon Cognito aggiorna la cache dall'URL dei metadati, considera ogni certificato come valido e il tuo IdP SAML può iniziare a firmare le asserzioni SAML con il nuovo certificato. Trascorso questo periodo, puoi rimuovere il certificato originale dai metadati pubblicati.

## Distinzione tra maiuscole e minuscole dei nomi utente SAML
<a name="saml-nameid-case-sensitivity"></a>

Quando un utente federato tenta di accedere, il provider di identità SAML (IdP) trasmette un messaggio univoco ad Amazon `NameId` Cognito nell'asserzione SAML dell'utente. Amazon Cognito identifica un utente federato da SAML in base all'attestazione `NameId`. Indipendentemente dalle impostazioni di distinzione tra maiuscole e minuscole del tuo pool di utenti, Amazon Cognito riconosce un utente federato di ritorno da un IdP SAML quando trasmette la sua dichiarazione unica e con distinzione tra maiuscole e minuscole. `NameId` Se mappi un attributo come `email` a `NameId` e l'utente modifica il proprio indirizzo e-mail, non può accedere alla tua app.

Mappa `NameId` nelle asserzioni SAML da un attributo del provider di identità con valori che non cambiano.

Ad esempio, Carlos ha un profilo utente nel bacino d'utenza senza distinzione tra maiuscole e minuscole da un'asserzione SAML di Active Directory Federation Services (ADFS) che ha passato un valore `NameId` di `Carlos@example.com`. La prossima volta che Carlos tenta di accedere, il provider di identità ADFS passa un valore `NameId` di `carlos@example.com`. Poiché `NameId` deve rispettare esattamente la distinzione tra maiuscole e minuscole, l'accesso non ha esito positivo.

Se gli utenti non riescono ad accedere dopo la modifica di `NameID`, elimina i profili utente dal bacino d'utenza. Amazon Cognito crea nuovi profili utente la prossima volta che viene eseguito l'accesso.

**Topics**
+ [Riferimento rapido per la configurazione IdP](#cognito-user-pools-saml-idp-reference)
+ [Cose da sapere su SAML IdPs nei pool di utenti di Amazon Cognito](cognito-user-pools-saml-idp-things-to-know.md)
+ [Distinzione tra maiuscole e minuscole dei nomi utente SAML](#saml-nameid-case-sensitivity)
+ [Configurazione del tuo provider di identità SAML di terze parti](cognito-user-pools-integrating-3rd-party-saml-providers.md)
+ [Aggiungere e gestire i provider di identità SAML in un pool di utenti](cognito-user-pools-managing-saml-idp.md)
+ [Avvio della sessione SAML nei bacini d'utenza di Amazon Cognito](cognito-user-pools-SAML-session-initiation.md)
+ [Disconnessione degli utenti SAML con accesso singolo](cognito-user-pools-saml-idp-sign-out.md)
+ [Firma e crittografia SAML](cognito-user-pools-SAML-signing-encryption.md)
+ [Nomi e identificatori dei provider di identità SAML](cognito-user-pools-managing-saml-idp-naming.md)

# Configurazione del tuo provider di identità SAML di terze parti
<a name="cognito-user-pools-integrating-3rd-party-saml-providers"></a>

Quando desideri aggiungere un provider di identità SAML (IdP) al tuo pool di utenti, devi apportare alcuni aggiornamenti di configurazione nell'interfaccia di gestione del tuo IdP. Questa sezione descrive come formattare i valori che devi fornire al tuo IdP. Puoi anche scoprire come recuperare il documento di metadati statico o Active-URL che identifica l'IdP e le relative attestazioni SAML nel tuo pool di utenti.

Per configurare soluzioni di provider di identità (IdP) SAML 2.0 di terze parti in modo che funzionino con la federazione per i pool di utenti di Amazon Cognito, devi configurare il tuo IdP SAML per reindirizzare al seguente URL di Assertion Consumer Service (ACS):. `https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse` Se il tuo pool di utenti ha un dominio Amazon Cognito, puoi trovare il percorso del dominio del pool di utenti nel menu **Dominio** del tuo pool di utenti nella console [Amazon Cognito](https://console.aws.amazon.com/cognito/home).

Alcuni SAML IdPs richiedono che tu fornisca il`urn`, chiamato anche URI del pubblico o ID dell'entità SP, nel modulo. `urn:amazon:cognito:sp:us-east-1_EXAMPLE` Puoi trovare l'ID del tuo pool di utenti nella sezione **Panoramica del pool di utenti** nella console Amazon Cognito.

Devi anche configurare il tuo IdP SAML per fornire valori per tutti gli attributi che hai designato *come attributi obbligatori* nel tuo pool di utenti. In genere, `email` è un attributo obbligatorio per i pool di utenti, nel qual caso l'IdP SAML deve fornire `email` una qualche forma di attestazione nella propria asserzione SAML e tu devi mappare l'attestazione all'attributo di quel provider.

Le seguenti informazioni di configurazione per le soluzioni IdP SAML 2.0 di terze parti sono un buon punto di partenza per configurare la federazione con i pool di utenti di Amazon Cognito. Per le informazioni più aggiornate, consulta direttamente la documentazione del tuo provider.

Per firmare le richieste SAML, devi configurare il tuo IdP in modo che consideri attendibili le richieste firmate dal certificato di firma del tuo pool di utenti. Per accettare risposte SAML crittografate, devi configurare il tuo IdP per *crittografare* tutte le risposte SAML nel tuo pool di utenti. Il tuo provider disporrà della documentazione sulla configurazione di queste funzionalità. Per un esempio di Microsoft, vedi [Configurare la crittografia del token SAML di Microsoft Entra](https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/howto-saml-token-encryption).

**Nota**  
Amazon Cognito richiede solo il documento di metadati del provider di identità. Il tuo provider potrebbe anche offrire informazioni di configurazione personalizzate per la federazione SAML 2.0 con IAM o. AWS IAM Identity Center Per scoprire come configurare l'integrazione con Amazon Cognito, consulta le istruzioni generali per recuperare il documento di metadati e gestire il resto della configurazione nel tuo pool di utenti.


| Soluzione | Ulteriori informazioni | 
| --- | --- | 
| ID Microsoft Entra | [Metadati federativi](https://learn.microsoft.com/en-us/entra/identity-platform/federation-metadata) | 
| Okta | [Come scaricare i metadati IdP e i certificati di firma SAML per l'integrazione di un'app SAML](https://support.okta.com/help/s/article/Location-to-download-Okta-IDP-XML-metadata-for-a-SAML-app-in-the-new-Admin-User-Interface) | 
| Auth0 | [Configura Auth0 come provider di identità SAML](https://auth0.com/docs/authenticate/protocols/saml/saml-sso-integrations/configure-auth0-saml-identity-provider) | 
| Identità ping () PingFederate | [Esportazione di metadati SAML da PingFederate](https://docs.pingidentity.com/integrations/contentful/configuring_single_sign-on/pf_contentful_integration_exporting_saml_metadata_from_pf.html) | 
| JumpCloud | [Note di configurazione SAML](https://jumpcloud.com/support/saml-configuration-notes) | 
| SecureAuth | [Integrazione delle applicazioni SAML](https://docs.secureauth.com/2104/en/saml-application-integration.html) | 

# Aggiungere e gestire i provider di identità SAML in un pool di utenti
<a name="cognito-user-pools-managing-saml-idp"></a>

Dopo aver configurato il tuo provider di identità per l'utilizzo con Amazon Cognito, puoi aggiungerlo ai tuoi pool di utenti e ai client delle app. Le seguenti procedure mostrano come creare, modificare ed eliminare i provider SAML in un pool di utenti Amazon Cognito.

------
#### [ Console di gestione AWS ]

Puoi utilizzare il Console di gestione AWS per creare ed eliminare i provider di identità SAML (). IdPs

Prima di creare un IdP SAML, devi disporre del documento di metadati SAML che ottieni dall'IdP di terze parti. Per istruzioni su come ricevere o generare il documento di metadati SAML richiesto, consulta [Configurazione del tuo provider di identità SAML di terze parti](cognito-user-pools-integrating-3rd-party-saml-providers.md).

**Per configurare un provider di identità SAML 2.0 nel bacino d'utenza**

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

1. Scegli **User Pools** (Pool di utenti).

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

1. Inserisci il **nome del provider**. È possibile passare questo nome descrittivo in un parametro di `identity_provider` richiesta a[Endpoint Authorize](authorization-endpoint.md).

1. Inserisci gli **Identifiers** (Identificatori) separati da virgole. Un identificatore indica ad Amazon Cognito che dovrebbe controllare l'indirizzo e-mail inserito dall'utente al momento dell'accesso e quindi indirizzarlo al provider che corrisponde al proprio dominio.

1. Scegli **Add sign-out flow** (Aggiungi flusso di disconnessione) se desideri che Amazon Cognito invii richieste di disconnessione firmate al tuo provider quando un utente si disconnette. Devi configurare il tuo IdP SAML 2.0 per inviare risposte di disconnessione all'endpoint creato quando `https://mydomain.auth.us-east-1.amazoncognito.com/saml2/logout` configuri l'accesso gestito. L'endpoint `saml2/logout` utilizza POST vincolanti.
**Nota**  
Se questa opzione è selezionata e il tuo IdP SAML prevede una richiesta di disconnessione firmata, devi anche fornire al tuo IdP SAML il certificato di firma dal tuo pool di utenti.  
L'IdP SAML elabora la richiesta di disconnessione con firmata e disconnette l'utente dalla sessione Amazon Cognito.

1. Scegli la configurazione di accesso **SAML avviata dall'IdP**. Come best practice di sicurezza, scegli **Accept** only asserzioni SAML avviate da SP. Se hai preparato il tuo ambiente per accettare in modo sicuro sessioni di accesso SAML non richieste, scegli **Accetta** asserzioni SAML avviate da SP e IdP. Per ulteriori informazioni, consulta [Avvio della sessione SAML nei bacini d'utenza di Amazon Cognito](cognito-user-pools-SAML-session-initiation.md).

1. Scegli una **Metadata document source** (Fonte del documento di metadati). Se il provider di identità offre metadati SAML a un URL pubblico, puoi scegliere l'opzione **Metadata document URL (URL del documento di metadati)** e inserire l'URL pubblico. In caso contrario, seleziona **Upload metadata document** (Carica documento di metadati) e seleziona un file di metadati scaricato dal tuo provider in precedenza.
**Nota**  
Ti consigliamo di inserire l'URL di un documento di metadati se il tuo provider ha un endpoint pubblico anziché caricare un file. Amazon Cognito aggiorna automaticamente i metadati dall'URL dei metadati. In genere, l'aggiornamento dei metadati avviene ogni 6 ore oppure prima della scadenza dei metadati, in base a ciò che avviene prima.

1. **Mappa gli attributi tra il tuo provider SAML e il tuo pool di utenti** per mappare gli attributi del provider SAML al profilo utente nel tuo pool di utenti. Includi gli attributi richiesti del bacino d'utenza nella mappa degli attributi. 

   Ad esempio, quando scegli **User pool attribute (Attributo del bacino d'utenza)** `email`, inserisci il nome dell'attributo SAML così come compare nell'asserzione SAML del provider di identità. Il provider di identità può offrire asserzioni SAML di esempio che possono essere di aiuto nell'individuare il nome. Alcuni IdPs usano nomi semplici, come`email`, mentre altri usano nomi come i seguenti.

   ```
   http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
   ```

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

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

Utilizza i comandi seguenti per creare e gestire un provider di identità SAML.

**Creazione di un provider di identità e caricamento di un documento di metadati**
+ AWS CLI: `aws cognito-idp create-identity-provider`

  Esempio con file di metadati: `aws cognito-idp create-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-type SAML --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`

  Dove `details.json` contiene:

  ```
  "ProviderDetails": { 
        "MetadataFile": "<SAML metadata XML>",
        "IDPSignout" : "true",
        "RequestSigningAlgorithm" : "rsa-sha256",
        "EncryptedResponses" : "true",
        "IDPInit" : "true"
  }
  ```
**Nota**  
Se *<SAML metadata XML>* contiene delle istanze del personaggio`"`, devi aggiungere `\` come carattere di escape:`\"`.

  Esempio con URL di metadati: `aws cognito-idp create-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-type SAML --provider-details MetadataURL=https://myidp.example.com/sso/saml/metadata --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`
+ AWS API: [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)

**Caricamento di un nuovo documento di metadati per un provider di identità**
+ AWS CLI: `aws cognito-idp update-identity-provider`

  Esempio con file di metadati: `aws cognito-idp update-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`

  Dove `details.json` contiene:

  ```
  "ProviderDetails": { 
        "MetadataFile": "<SAML metadata XML>",
        "IDPSignout" : "true",
        "RequestSigningAlgorithm" : "rsa-sha256",
        "EncryptedResponses" : "true",
        "IDPInit" : "true"
  }
  ```
**Nota**  
Se *<SAML metadata XML>* contiene delle istanze del personaggio`"`, devi aggiungere `\` come carattere di escape:`\"`.

  Esempio con URL di metadati: `aws cognito-idp update-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-details MetadataURL=https://myidp.example.com/sso/saml/metadata --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`
+ AWS API: [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)

**Recupero delle informazioni su un provider di identità specifico**
+ AWS CLI: `aws cognito-idp describe-identity-provider`

  `aws cognito-idp describe-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1`
+ AWS API: [DescribeIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html)

**Per elencare informazioni su tutti IdPs**
+ AWS CLI: `aws cognito-idp list-identity-providers`

  Ad esempio: `aws cognito-idp list-identity-providers --user-pool-id us-east-1_EXAMPLE --max-results 3`
+ AWS API: [ListIdentityProviders](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListIdentityProviders.html)

**Eliminazione di un IdP**
+ AWS CLI: `aws cognito-idp delete-identity-provider`

  `aws cognito-idp delete-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1`
+ AWS API: [DeleteIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteIdentityProvider.html)

------

**Per configurare l'IdP SAML per l'aggiunta di un bacino d'utenza come relying party**
+ L'URN del provider di servizi del bacino d'utenza è: `urn:amazon:cognito:sp:us-east-1_EXAMPLE`. Amazon Cognito richiede un valore di restrizione del pubblico che corrisponda a questo URN nella risposta SAML. Configura il tuo IdP per utilizzare il seguente endpoint di binding POST per il IdP-to-SP messaggio di risposta.

  ```
  https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse
  ```
+ Il tuo IdP SAML deve `NameID` compilare tutti gli attributi obbligatori per il tuo pool di utenti nell'asserzione SAML. `NameID`viene utilizzato per identificare in modo univoco l'utente federato SAML nel pool di utenti. Il tuo IdP deve trasmettere l'ID del nome SAML di ogni utente in un formato coerente con distinzione tra maiuscole e minuscole. Qualsiasi variazione del valore dell'ID del nome utente crea un nuovo profilo utente.

**Fornire un certificato di firma all'IDP SAML 2.0**
+ ****Per scaricare una copia della chiave pubblica da Amazon Cognito che il tuo IdP può utilizzare per convalidare le richieste di disconnessione SAML, scegli il menu **Social e provider esterni del tuo pool di utenti, seleziona il tuo IdP e**, in Visualizza certificato di firma, seleziona Scarica come .crt.****

Puoi eliminare qualsiasi provider SAML configurato nel tuo bacino d'utenza con la console Amazon Cognito.

**Come eliminare un provider SAML**

1. Accedi alla [console Amazon Cognito](https://console.aws.amazon.com/cognito/home).

1. Nel pannello di navigazione, scegli **User Pools** (Bacini d'utenza) e seleziona i bacini d'utenza che intendi modificare.

1. **Scegli il menu Social e provider esterni.**

1. Seleziona il pulsante di opzione accanto al SAML IdPs che desideri eliminare.

1. Quando viene richiesto di confermare l'opzione **Delete identity provider** (Elimina provider di identità), inserisci il nome del provider SAML per confermare l'eliminazione, quindi scegli **Delete** (Elimina).

# Avvio della sessione SAML nei bacini d'utenza di Amazon Cognito
<a name="cognito-user-pools-SAML-session-initiation"></a>

Amazon Cognito supporta il single sign-on (SSO) avviato dal service provider (avviato da SP) e l'SSO avviato da IdP. Come migliore pratica di sicurezza, implementa l'SSO avviato da SP nel tuo pool di utenti. La sezione 5.1.2 della [Panoramica tecnica di SAML V2.0](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html#5.1.2.SP-Initiated%20SSO:%20%20Redirect/POST%20Bindings|outline) descrive l'SSO avviato dal provider di servizi. Amazon Cognito è il provider di identità della tua app. L'app è il provider di servizi che recupera i token per gli utenti autenticati. Tuttavia, quando utilizzi un provider di identità di terze parti per autenticare gli utenti, Amazon Cognito diventa il provider di servizi. Quando gli utenti SAML 2.0 si autenticano con un flusso avviato da SP, devono sempre prima effettuare una richiesta ad Amazon Cognito e reindirizzare all'IdP per l'autenticazione.

Per alcuni casi d'uso aziendali, l'accesso alle applicazioni interne inizia da un segnalibro in un dashboard ospitato dal provider di identità aziendale. Quando un utente seleziona un segnalibro, il provider di identità genera una risposta SAML e la invia al provider di servizi per autenticare l'utente con l'applicazione.

Puoi configurare un IdP SAML nel tuo pool di utenti per supportare l'SSO avviato da IdP. Quando supporti l'autenticazione avviata da IdP, Amazon Cognito non può verificare di aver richiesto la risposta SAML che riceve perché Amazon Cognito non avvia l'autenticazione con una richiesta SAML. Nell'SSO avviato da SP, Amazon Cognito imposta parametri di stato che convalidano una risposta SAML rispetto alla richiesta originale. Con l'accesso avviato da SP puoi anche proteggerti dalla falsificazione delle richieste tra siti (CSRF).

**Topics**
+ [Implementa l'accesso SAML avviato da SP](#cognito-user-pools-saml-idp-authentication)
+ [Implementazione dell'accesso SAML avviato da IdP](#cognito-user-pools-SAML-session-initiation-idp-initiation)

## Implementa l'accesso SAML avviato da SP
<a name="cognito-user-pools-saml-idp-authentication"></a>

Come best practice, implementa l'accesso service-provider-initiated (avviato da SP) al tuo pool di utenti. Amazon Cognito avvia la sessione dell'utente e lo reindirizza al tuo IdP. Con questo metodo, hai il massimo controllo su chi presenta le richieste di accesso. Puoi anche consentire l'accesso avviato dall'IdP a determinate condizioni.

La procedura seguente mostra come gli utenti completano l'accesso avviato da SP al tuo pool di utenti tramite un provider SAML.

![\[Diagramma del flusso di autenticazione dell'accesso SAML avviato da Amazon Cognito SP.\]](http://docs.aws.amazon.com/it_it/cognito/latest/developerguide/images/scenario-authentication-saml-stepbystep.png)


1. L'utente inserisce il proprio indirizzo e-mail in una pagina di accesso. Per determinare il reindirizzamento dell'utente al suo IdP, puoi raccogliere il suo indirizzo e-mail in un'applicazione personalizzata o richiamare l'accesso gestito nella visualizzazione web.

   Puoi configurare le tue pagine di accesso gestite per visualizzare un elenco IdPs o richiedere un indirizzo e-mail e abbinarlo all'identificatore del tuo IdP SAML. ****Per richiedere un indirizzo e-mail, modifica lo stile di branding dell'accesso gestito e, in **Foundation**, individua il **comportamento di autenticazione** e, in **Provider display, imposta Stile di visualizzazione** su Domain search input.****

1. L'app richiama l'endpoint di reindirizzamento del pool di utenti e richiede una sessione con l'ID client che corrisponde all'app e l'ID IdP che corrisponde all'utente.

1. [Amazon Cognito reindirizza l'utente all'IdP con una richiesta SAML, facoltativamente firmata, in un elemento.](cognito-user-pools-SAML-signing-encryption.md#cognito-user-pools-SAML-signing.title) `AuthnRequest`

1. L'IdP autentica l'utente in modo interattivo o con una sessione memorizzata in un cookie del browser.

1. L'IdP reindirizza l'utente all'endpoint di risposta SAML del pool di utenti con l'asserzione SAML crittografata [facoltativamente nel payload POST](cognito-user-pools-SAML-signing-encryption.md#cognito-user-pools-SAML-signing-encryption.title).
**Nota**  
Amazon Cognito annulla le sessioni che non ricevono una risposta entro 5 minuti e reindirizza l'utente all'accesso gestito. Quando il tuo utente riscontra questo risultato, riceve un messaggio di errore. `Something went wrong`

1. Dopo aver verificato l'asserzione SAML e aver [mappato gli attributi utente](cognito-user-pools-specifying-attribute-mapping.md#cognito-user-pools-specifying-attribute-mapping.title) dalle affermazioni nella risposta, Amazon Cognito crea o aggiorna internamente il profilo dell'utente nel pool di utenti. In genere, il tuo pool di utenti restituisce un codice di autorizzazione alla sessione del browser dell'utente.

1. L'utente presenta il codice di autorizzazione all'app, che scambia il codice con token web JSON ()JWTs.

1. L'app accetta ed elabora il token ID dell'utente come autenticazione, genera richieste autorizzate alle risorse con il relativo token di accesso e archivia il relativo token di aggiornamento.

Quando un utente si autentica e riceve una concessione di codice di autorizzazione, il pool di utenti restituisce ID, accesso e token di aggiornamento. Il token ID è un oggetto di autenticazione per la gestione delle identità basata su OIDC. [Il token di accesso è un oggetto di autorizzazione con OAuth ambiti 2.0.](https://oauth.net/2/) Il token di aggiornamento è un oggetto che genera nuovi ID e token di accesso quando i token correnti dell'utente sono scaduti. Puoi configurare la durata dei token degli utenti nel client dell'app del pool di utenti.

Puoi anche scegliere la durata dei token di aggiornamento. Dopo la scadenza del token di aggiornamento, l'utente deve effettuare nuovamente l'accesso. Se si sono autenticati tramite un IdP SAML, la durata della sessione degli utenti è impostata dalla scadenza dei loro token, non dalla scadenza della sessione con il loro IdP. L'app deve archiviare il token di aggiornamento di ogni utente e rinnovare la sessione alla scadenza. L'accesso gestito mantiene le sessioni utente in un cookie del browser valido per 1 ora.

## Implementazione dell'accesso SAML avviato da IdP
<a name="cognito-user-pools-SAML-session-initiation-idp-initiation"></a>

Quando configuri il tuo provider di identità per l'accesso a SAML 2.0 avviato da IdP, puoi presentare asserzioni SAML all'`saml2/idpresponse`endpoint nel dominio del tuo pool di utenti senza la necessità di avviare la sessione presso. [Endpoint Authorize](authorization-endpoint.md) Un pool di utenti con questa configurazione accetta asserzioni SAML avviate da IdP da un provider di identità esterno del pool di utenti supportato dal client dell'app richiesto.

![\[Diagramma del flusso di autenticazione dell'accesso SAML avviato da Amazon Cognito IdP.\]](http://docs.aws.amazon.com/it_it/cognito/latest/developerguide/images/scenario-authentication-saml-idpinit.png)


1. Un utente richiede l'accesso SAML con la tua applicazione.

1. L'applicazione richiama un browser o reindirizza l'utente alla pagina di accesso del suo provider SAML.

1. L'IdP autentica l'utente in modo interattivo o con una sessione memorizzata in un cookie del browser.

1. L'IdP reindirizza l'utente all'applicazione con l'asserzione, o risposta, SAML nel corpo POST.

1. L'applicazione aggiunge l'asserzione SAML al corpo POST di una richiesta all'endpoint del pool di utenti. `saml2/idpresponse`

1. Amazon Cognito emette un codice di autorizzazione per l'utente.

1. L'utente presenta il codice di autorizzazione all'app, che lo scambia con token web JSON (). JWTs

1. L'applicazione accetta ed elabora il token ID dell'utente come autenticazione, genera richieste autorizzate alle risorse con il relativo token di accesso e archivia il relativo token di aggiornamento.

I passaggi seguenti descrivono il processo generale di configurazione e accesso con un provider SAML 2.0 avviato da IdP.

1. Crea o designa un pool di utenti e un client per l'app.

1. Crea un IdP SAML 2.0 nel tuo pool di utenti.

1. Configura il tuo IdP per supportare l'avvio dell'IdP. SAML avviato da IdP introduce considerazioni sulla sicurezza a cui altri provider SSO non sono soggetti. Per questo motivo, non puoi aggiungere elementi non SAML IdPs, incluso il pool di utenti stesso, a nessun client di app che utilizza un provider SAML con accesso avviato da IdP.

1. Associa il tuo provider SAML avviato dall'IdP a un client di app nel tuo pool di utenti.

1. Indirizza l'utente alla pagina di accesso del tuo IdP SAML e recupera un'asserzione SAML.

1. Indirizza il tuo utente all'endpoint del tuo pool di utenti con la sua asserzione SAML`saml2/idpresponse`.

1. Ricevi token web JSON (). JWTs

Per accettare asserzioni SAML non richieste nel tuo pool di utenti, devi considerarne l'effetto sulla sicurezza dell'app. È probabile che si verifichino tentativi di contraffazione delle richieste e CSRF quando si accettano richieste avviate da IdP. Sebbene il tuo pool di utenti non sia in grado di verificare una sessione di accesso avviata dall'IdP, Amazon Cognito convalida i parametri di richiesta e le asserzioni SAML.

Inoltre, l'asserzione SAML non deve contenere un `InResponseTo` reclamo e deve essere stata emessa nei 6 minuti precedenti.

Devi inviare richieste con SAML avviato da IdP al tuo. `/saml2/idpresponse` Per le richieste di autorizzazione di accesso avviate e gestite da SP, devi fornire parametri che identifichino il client dell'app richiesta, gli ambiti, l'URI di reindirizzamento e altri dettagli come parametri della stringa di query nelle richieste. `HTTP GET` Per le asserzioni SAML avviate da IdP, tuttavia, i dettagli della richiesta devono essere formattati come `RelayState` parametri nel corpo di una richiesta. `HTTP POST` Il corpo della richiesta deve contenere anche l'asserzione SAML come parametro. `SAMLResponse`

Di seguito è riportato un esempio di richiesta e risposta per un provider SAML avviato da IdP.

```
POST /saml2/idpresponse HTTP/1.1
User-Agent: USER_AGENT
Accept: */*
Host: example.auth.us-east-1.amazoncognito.com
Content-Type: application/x-www-form-urlencoded

SAMLResponse=[Base64-encoded SAML assertion]&RelayState=identity_provider%3DMySAMLIdP%26client_id%3D1example23456789%26redirect_uri%3Dhttps%3A%2F%2Fwww.example.com%26response_type%3Dcode%26scope%3Demail%2Bopenid%2Bphone

HTTP/1.1 302 Found
Date: Wed, 06 Dec 2023 00:15:29 GMT
Content-Length: 0
x-amz-cognito-request-id: 8aba6eb5-fb54-4bc6-9368-c3878434f0fb
Location: https://www.example.com?code=[Authorization code]
```

------
#### [ Console di gestione AWS ]

**Per configurare un IdP per SAML avviato da IdP**

1. Crea un [pool di utenti](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html), un [client di app](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html) e un provider di identità SAML.

1. Dissocia tutti i provider di identità social e OIDC dal client dell'app, se ne sono associati.

1. Vai al menu **Provider social ed esterni** del tuo pool di utenti.

1. Modifica o aggiungi un provider SAML.

1. In **Accesso SAML avviato da IdP, scegli Accetta asserzioni SAML** **iniziate da SP** e da IdP.

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

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

**Per configurare un IdP per SAML avviato da IdP**

Configura SAML avviato da IdP con il `IDPInit` parametro in una [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)richiesta o API. [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html) Di seguito è riportato un esempio `ProviderDetails` di IdP che supporta SAML avviato da IdP.

```
"ProviderDetails": { 
      "MetadataURL" : "https://myidp.example.com/saml/metadata",
      "IDPSignout" : "true",
      "RequestSigningAlgorithm" : "rsa-sha256",
      "EncryptedResponses" : "true",
      "IDPInit" : "true"
}
```

------

# Disconnessione degli utenti SAML con accesso singolo
<a name="cognito-user-pools-saml-idp-sign-out"></a>

Amazon Cognito supporta il [single logout](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html#5.3.Single%20Logout%20Profile|outline) (SLO) SAML 2.0. Con SLO, la tua applicazione può disconnettere gli utenti dai loro provider di identità SAML (IdPs) quando si disconnettono dal tuo pool di utenti. In questo modo, quando gli utenti vogliono accedere nuovamente alla tua applicazione, devono autenticarsi con il proprio IdP SAML. In caso contrario, potrebbero disporre di cookie del browser IdP o del pool di utenti che li trasmettono all'applicazione senza la necessità di fornire credenziali.

Quando configuri il tuo IdP SAML per **supportare il flusso di disconnessione**, Amazon Cognito reindirizza l'utente con una richiesta di disconnessione SAML firmata al tuo IdP. Amazon Cognito determina la posizione di reindirizzamento dall'`SingleLogoutService`URL nei metadati del tuo IdP. Amazon Cognito firma la richiesta di disconnessione con il certificato di firma del tuo pool di utenti.

![\[Diagramma del flusso di autenticazione della disconnessione da Amazon Cognito SAML. L'utente richiede la disconnessione e Amazon Cognito lo reindirizza al proprio provider con una richiesta di disconnessione SAML.\]](http://docs.aws.amazon.com/it_it/cognito/latest/developerguide/images/scenario-authentication-saml-sign-out.png)


Quando indirizzi un utente con una sessione SAML all'`/logout`endpoint del tuo pool di utenti, Amazon Cognito reindirizza l'utente SAML con la seguente richiesta all'endpoint SLO specificato nei metadati IdP.

```
https://[SingleLogoutService endpoint]?
SAMLRequest=[encoded SAML request]&
RelayState=[RelayState]&
SigAlg=http://www.w3.org/2001/04/xmldsig-more#rsa-sha256&
Signature=[User pool RSA signature]
```

L'utente torna quindi al tuo `saml2/logout` endpoint con un messaggio del suo `LogoutResponse` IdP. Il tuo IdP deve inviare una `HTTP POST` richiesta. `LogoutResponse` Amazon Cognito li reindirizza quindi alla destinazione di reindirizzamento indicata nella richiesta di disconnessione iniziale.

Il tuo provider SAML potrebbe inviare un messaggio contenente più `LogoutResponse` di uno. `AuthnStatement` Il `sessionIndex` valore inserito per primo `AuthnStatement` in una risposta di questo tipo deve corrispondere a quello contenuto `sessionIndex` nella risposta SAML che originariamente ha autenticato l'utente. Se si `sessionIndex` trova in un'altra`AuthnStatement`, Amazon Cognito non riconoscerà la sessione e l'utente non verrà disconnesso.

------
#### [ Console di gestione AWS ]

**Per configurare la disconnessione SAML**

1. Crea un [pool di utenti](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html), un [client di app](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html) e un IdP SAML.

1. Quando crei o modifichi il tuo provider di identità SAML, in **Informazioni sul provider di identità**, seleziona la casella con il titolo **Aggiungi** flusso di disconnessione.

1. Dal menu **Social e provider esterni** del tuo pool di utenti, scegli il tuo IdP e individua il certificato di **firma**.

1. Scegli **Scarica come .crt.**

1. Configura il tuo provider SAML per supportare il single logout SAML e la firma delle richieste, quindi carica il certificato di firma del pool di utenti. Il tuo IdP deve reindirizzare verso il dominio del tuo `/saml2/logout` pool di utenti.

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

**Per configurare la disconnessione SAML**

Configura il logout singolo con il `IDPSignout` parametro di una richiesta [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)o [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)API. Di seguito è riportato un esempio `ProviderDetails` di IdP che supporta il single logout SAML.

```
"ProviderDetails": { 
      "MetadataURL" : "https://myidp.example.com/saml/metadata",
      "IDPSignout" : "true",,
      "RequestSigningAlgorithm" : "rsa-sha256",
      "EncryptedResponses" : "true",
      "IDPInit" : "true"
}
```

------

# Firma e crittografia SAML
<a name="cognito-user-pools-SAML-signing-encryption"></a>

L'accesso a SAML 2.0 si basa sull'utente di un'applicazione come portatore di richieste e risposte nel flusso di autenticazione. Potresti voler assicurarti che gli utenti non leggano o modifichino questi documenti SAML in transito. A tale scopo, aggiungi la firma e la crittografia SAML ai provider di identità SAML (IdPs) nel tuo pool di utenti. Con la firma SAML, i tuoi pool di utenti aggiungono una firma alle richieste di accesso e disconnessione SAML. Con la chiave pubblica del tuo pool di utenti, il tuo IdP può verificare che stia ricevendo richieste SAML non modificate. Quindi, quando il tuo IdP risponde e trasmette le asserzioni SAML alle sessioni del browser degli utenti, l'IdP può crittografare la risposta in modo che l'utente non possa controllare i propri attributi e autorizzazioni.

Con la firma e la crittografia SAML, tutte le operazioni crittografiche durante le operazioni SAML del pool di utenti devono generare firme e testo cifrato con le chiavi generate da Amazon Cognito user-pool-provided. Attualmente, non puoi configurare un pool di utenti per firmare richieste o accettare asserzioni crittografate con una chiave esterna.

**Nota**  
I certificati del pool di utenti sono validi per 10 anni. Una volta all'anno, Amazon Cognito genera nuovi certificati di firma e crittografia per il tuo pool di utenti. Amazon Cognito restituisce il certificato più recente quando richiedi il certificato di firma e firma le richieste con il certificato di firma più recente. Il tuo IdP può crittografare le asserzioni SAML con qualsiasi certificato di crittografia del pool di utenti non scaduto. I certificati precedenti continuano a essere validi per tutta la loro durata e la chiave pubblica non cambia tra i certificati. Come best practice, aggiorna annualmente il certificato nella configurazione del provider.

**Topics**
+ [Accettazione di risposte SAML crittografate dal tuo IdP](#cognito-user-pools-SAML-encryption)
+ [Firma delle richieste SAML](#cognito-user-pools-SAML-signing)

## Accettazione di risposte SAML crittografate dal tuo IdP
<a name="cognito-user-pools-SAML-encryption"></a>

Amazon Cognito e il tuo IdP possono stabilire la riservatezza nelle risposte SAML quando gli utenti accedono e si disconnettono. Amazon Cognito assegna una coppia di chiavi RSA pubblica-privata e un certificato a ogni provider SAML esterno che configuri nel tuo pool di utenti. Quando abiliti la crittografia delle risposte per il provider SAML del tuo pool di utenti, devi caricare il certificato su un IdP che supporti le risposte SAML crittografate. La connessione del pool di utenti al tuo IdP SAML non funziona prima che l'IdP inizi a crittografare tutte le asserzioni SAML con la chiave fornita.

Di seguito è riportata una panoramica del flusso di un accesso SAML crittografato.

1. L'utente avvia l'accesso e sceglie il proprio IdP SAML.

1. Il tuo pool di utenti [Endpoint Authorize](authorization-endpoint.md) reindirizza l'utente al suo IdP SAML con una richiesta di accesso SAML. Il tuo pool di utenti può facoltativamente accompagnare questa richiesta con una firma che abilita la verifica dell'integrità da parte dell'IdP. Quando desideri firmare richieste SAML, devi configurare il tuo IdP per accettare le richieste che il tuo pool di utenti ha firmato con la chiave pubblica nel certificato di firma.

1. L'IdP SAML accede al tuo utente e genera una risposta SAML. L'IdP crittografa la risposta con la chiave pubblica e reindirizza l'utente all'endpoint del pool di utenti. `/saml2/idpresponse` L'IdP deve crittografare la risposta come definito dalla specifica SAML 2.0. Per ulteriori informazioni, vedere `Element <EncryptedAssertion>` in [Assertions and Protocols for the OASIS Security Assertion Markup](https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf) Language (SAML) V2.0.

1. Il tuo pool di utenti decrittografa il testo cifrato nella risposta SAML con la chiave privata e accede all'utente.

**Importante**  
Quando abiliti la crittografia delle risposte per un IdP SAML nel tuo pool di utenti, l'IdP deve crittografare tutte le risposte con una chiave pubblica specifica per il provider. Amazon Cognito non accetta risposte SAML non crittografate da un IdP esterno SAML configurato per supportare la crittografia. 

Qualsiasi IdP SAML esterno nel tuo pool di utenti può supportare la crittografia delle risposte e ogni IdP riceve la propria coppia di chiavi.

------
#### [ Console di gestione AWS ]

**Per configurare la crittografia delle risposte SAML**

1. Crea un [pool di utenti](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html), un [client di app](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html) e un IdP SAML.

1. Quando crei o modifichi il tuo provider di identità SAML, in **Firma le richieste e crittografa le risposte**, seleziona la casella con il titolo **Richiedi asserzioni SAML crittografate** da questo provider.

1. Dal menu **Provider social ed esterni** del tuo pool di utenti, seleziona il tuo IdP SAML e **scegli Visualizza** certificato di crittografia.

1. Scegli **Scarica come .crt** e fornisci il file scaricato al tuo IdP SAML. Configura il tuo IdP SAML per crittografare le risposte SAML con la chiave nel certificato.

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

**Per configurare la crittografia delle risposte SAML**

Configura la crittografia delle risposte con il `EncryptedResponses` parametro di una richiesta [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)o [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)API. Di seguito è riportato un esempio `ProviderDetails` di IdP che supporta la firma delle richieste.

```
"ProviderDetails": { 
      "MetadataURL" : "https://myidp.example.com/saml/metadata",
      "IDPSignout" : "true",
      "RequestSigningAlgorithm" : "rsa-sha256",
      "EncryptedResponses" : "true",
      "IDPInit" : "true"
}
```

Per ottenere il certificato di crittografia dal tuo pool di utenti, effettua una richiesta [DescribeIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html)API e recupera il valore di `ActiveEncryptionCertificate` nel parametro di risposta. `ProviderDetails` Salva questo certificato e forniscilo al tuo IdP come certificato di crittografia per le richieste di accesso dal tuo pool di utenti.

------

## Firma delle richieste SAML
<a name="cognito-user-pools-SAML-signing"></a>

La capacità di dimostrare l'integrità delle richieste SAML 2.0 al tuo IdP è un vantaggio in termini di sicurezza dell'accesso SAML avviato da Amazon Cognito SP. Ogni pool di utenti con un dominio riceve un certificato di firma X.509 del pool di utenti. Con la chiave pubblica in questo certificato, i pool di utenti applicano una firma crittografica alle *richieste di disconnessione* che il pool di utenti genera quando gli utenti selezionano un IdP SAML. *Facoltativamente, puoi configurare il client dell'app per firmare le richieste di accesso SAML.* Quando firmi le tue richieste SAML, il tuo IdP può verificare che la firma nei metadati XML delle tue richieste corrisponda alla chiave pubblica nel certificato del pool di utenti che fornisci.

------
#### [ Console di gestione AWS ]

**Per configurare la firma delle richieste SAML**

1. Crea un [pool di utenti](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html), un [client di app](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html) e un IdP SAML.

1. Quando crei o modifichi il tuo provider di identità SAML, in **Firma richieste e risposte crittografate**, seleziona la casella con il titolo **Firma le richieste SAML** a questo provider.

1. Dal menu **Social e provider esterni** del tuo pool di utenti, scegli **Visualizza** certificato di firma.

1. Scegli **Scarica come .crt** e fornisci il file scaricato al tuo IdP SAML. Configura il tuo IdP SAML per verificare la firma delle richieste SAML in entrata.

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

**Per configurare la firma delle richieste SAML**

Configura la firma delle richieste con il `RequestSigningAlgorithm` parametro di una richiesta [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)o [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)API. Di seguito è riportato un esempio `ProviderDetails` di IdP che supporta la firma delle richieste.

```
"ProviderDetails": { 
      "MetadataURL" : "https://myidp.example.com/saml/metadata",
      "IDPSignout" : "true",
      "RequestSigningAlgorithm" : "rsa-sha256",
      "EncryptedResponses" : "true",
      "IDPInit" : "true"
}
```

------

# Nomi e identificatori dei provider di identità SAML
<a name="cognito-user-pools-managing-saml-idp-naming"></a>

Quando dai un nome ai tuoi provider di identità SAML (IdPs) e assegni identificatori IdP, puoi automatizzare il flusso di richieste di accesso e disconnessione avviate da SP a quel provider. Per informazioni sui vincoli di stringa al nome del provider, consulta la proprietà di. `ProviderName` [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html#CognitoUserPools-CreateIdentityProvider-request-ProviderName)

![\[Diagramma del flusso di autenticazione dell'accesso SAML avviato da Amazon Cognito SP con un identificatore IdP e accesso gestito. L'utente fornisce un indirizzo e-mail per l'accesso gestito e Amazon Cognito lo reindirizza automaticamente al proprio provider.\]](http://docs.aws.amazon.com/it_it/cognito/latest/developerguide/images/scenario-authentication-saml-identifier.png)


Puoi anche scegliere fino a 50 identificatori per i tuoi provider SAML. Un identificatore è un nome descrittivo per un IdP nel pool di utenti e deve essere univoco all'interno del pool di utenti. Se gli identificatori SAML corrispondono ai domini e-mail degli utenti, l'accesso gestito richiede l'indirizzo e-mail di ciascun utente, valuta il dominio nel relativo indirizzo e-mail e lo reindirizza all'IdP corrispondente al loro dominio. Poiché la stessa organizzazione può possedere più domini, un singolo IdP può avere più identificatori.

Indipendentemente dal fatto che utilizzi o meno gli identificatori di dominio e-mail, puoi utilizzare gli identificatori in un'app multi-tenant per reindirizzare gli utenti all'IdP corretto. Se desideri ignorare completamente l'accesso gestito, puoi personalizzare i link che presenti agli utenti in modo che reindirizzino [Endpoint Authorize](authorization-endpoint.md) direttamente al loro IdP. Per accedere ai tuoi utenti con un identificatore e reindirizzarli al loro IdP, includi l'identificatore nel formato `idp_identifier=myidp.example.com` nei parametri di richiesta della loro richiesta di autorizzazione iniziale.

Un altro metodo per passare un utente al tuo IdP consiste nel compilare il parametro `identity_provider` con il nome del tuo IdP nel seguente formato URL.

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

Dopo che un utente ha effettuato l'accesso con il tuo IdP SAML, il tuo IdP lo reindirizza con una risposta SAML nel corpo dell'utente all'endpoint. `HTTP POST` `/saml2/idpresponse` Amazon Cognito elabora l'asserzione SAML e, se le affermazioni nella risposta soddisfano le aspettative, reindirizza all'URL di callback del client dell'app. Dopo aver completato l'autenticazione in questo modo, l'utente ha interagito con le pagine Web solo per il tuo IdP e la tua app.

Con gli identificatori IdP in un formato di dominio, l'accesso gestito richiede gli indirizzi e-mail al momento dell'accesso e quindi, quando il dominio e-mail corrisponde a un identificatore IdP, reindirizza gli utenti alla pagina di accesso del loro IdP. Ad esempio, crei un'app che richiede l'accesso da parte di dipendenti di due aziende diverse. La prima azienda, AnyCompany A, possiede `exampleA.com` e`exampleA.co.uk`. La seconda società, AnyCompany B, possiede`exampleB.com`. Per questo esempio, ne hai impostate due IdPs, una per ogni società, come segue: 
+ Per il provider di identità A, puoi definire gli identificatori `exampleA.com` e `exampleA.co.uk`.
+ Per il provider di identità B, puoi definire l'identificatore `exampleB.com`.

Nell'app, richiama l'accesso gestito per il client dell'app per richiedere a ciascun utente di inserire il proprio indirizzo e-mail. Amazon Cognito ricava il dominio dall'indirizzo e-mail, correla il dominio a un IdP con un identificatore di dominio e reindirizza l'utente all'IdP corretto con una richiesta a quello che contiene un parametro di richiesta. [Endpoint Authorize](authorization-endpoint.md) `idp_identifier` Ad esempio, se un utente entra`bob@exampleA.co.uk`, la pagina successiva con cui interagisce è la pagina di accesso IdP all'indirizzo. `https://auth.exampleA.co.uk/sso/saml`

Puoi anche implementare la stessa logica in modo indipendente. Nella tua app, puoi creare un modulo personalizzato che raccoglie l'input dell'utente e lo correla all'IdP corretto secondo la tua logica. Puoi generare portali personalizzati per ciascuno dei tenant dell'app, ognuno dei quali si collega all'endpoint di autorizzazione con l'identificatore del tenant nei parametri di richiesta.

Per raccogliere un indirizzo e-mail e analizzare il dominio nell'accesso gestito, assegna almeno un identificatore a ciascun IdP SAML che hai assegnato al client dell'app. Per impostazione predefinita, la schermata di accesso gestito mostra un pulsante per ciascuno dei pulsanti assegnati al client IdPs dell'app. Tuttavia, se gli identificatori sono stati assegnati correttamente, la pagina di accesso all'interfaccia utente ospitata classica è simile all'immagine seguente.

![\[Una pagina di accesso gestito da Amazon Cognito che mostra l'accesso dell'utente locale e una richiesta a un utente federato di inserire un indirizzo e-mail.\]](http://docs.aws.amazon.com/it_it/cognito/latest/developerguide/images/cup-saml-identifiers.png)


**Nota**  
Nella classica interfaccia utente ospitata, la pagina di accesso per il client dell'app richiede automaticamente un indirizzo e-mail quando assegni gli identificatori al tuo. IdPs Nell'esperienza di accesso gestito, devi abilitare questo comportamento nell'editor di branding. Nella categoria Impostazioni del **comportamento di autenticazione**, seleziona **Domain search input** sotto la voce **Provider display**.

L'analisi del dominio nell'accesso gestito richiede l'utilizzo di domini come identificatori IdP. Se assegni un identificatore di qualsiasi tipo a ciascun client SAML IdPs per un'app, l'accesso gestito per quell'app non mostra più i pulsanti di selezione IDP. Aggiungi identificatori IdP per SAML quando intendi utilizzare l'analisi delle e-mail o la logica personalizzata per generare reindirizzamenti. Se desideri generare reindirizzamenti silenziosi e desideri che le tue pagine di accesso gestite visualizzino un elenco di IdPs, non assegnare identificatori e utilizza il parametro di richiesta nelle tue richieste di autorizzazione. `identity_provider`
+ Se assegni un solo IdP SAML al client dell'app, la pagina di accesso gestito mostra un pulsante per accedere con quell'IdP.
+ Se assegni un identificatore a ogni IdP SAML che attivi per il client dell'app, nella pagina di accesso gestito viene visualizzato un messaggio che richiede l'immissione di un indirizzo e-mail da parte dell'utente.
+ Se ne hai più di uno IdPs e non assegni un identificatore a tutti, la pagina di accesso gestito mostra un pulsante per accedere con ogni IdP assegnato.
+ Se hai assegnato degli identificatori al tuo IdPs e desideri che le tue pagine di accesso gestite mostrino una selezione di pulsanti IdP, aggiungi un nuovo IdP privo di identificatore al client dell'app o crea un nuovo app client. Puoi anche eliminare un IdP esistente e aggiungerlo di nuovo senza un identificatore. Se crei un nuovo IdP, i tuoi utenti SAML creeranno nuovi profili utente. Questa duplicazione di utenti attivi potrebbe avere un impatto sulla fatturazione nel mese in cui modifichi la configurazione dell'IdP.

Per ulteriori informazioni sulla configurazione degli IdP, consulta [Configurazione dei provider di identità per il bacino d'utenza](cognito-user-pools-identity-provider.md).

# 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\$1verified** 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
```

# Flusso di autenticazione IdP del bacino d'utenza OIDC
<a name="cognito-user-pools-oidc-flow"></a>

Con l'accesso a OpenID Connect (OIDC), il tuo pool di utenti automatizza un flusso di accesso con codice di autorizzazione con il tuo provider di identità (IdP). Dopo che l'utente ha completato l'accesso con il proprio IdP, Amazon Cognito raccoglie il codice sull'endpoint del provider esterno. `oauth2/idpresponse` Con il token di accesso risultante, il pool di utenti interroga l'endpoint `userInfo` IdP per recuperare gli attributi dell'utente. Il pool di utenti confronta quindi gli attributi ricevuti con le regole di mappatura degli attributi che hai impostato e compila di conseguenza il profilo e il token ID dell'utente.

Gli ambiti OAuth 2.0 richiesti nella configurazione del provider OIDC definiscono gli attributi utente che l'IdP fornisce ad Amazon Cognito. Come migliore pratica di sicurezza, richiedi solo gli ambiti che corrispondono agli attributi che desideri mappare al tuo pool di utenti. Ad esempio, se il tuo pool di utenti lo richiede`openid profile`, otterrai tutti gli attributi possibili, ma se lo richiedi `openid email phone_number` otterrai solo l'indirizzo email e il numero di telefono dell'utente. Puoi configurare gli ambiti [richiesti a OIDC in modo che IdPs differiscano da](cognito-user-pools-oidc-idp.md#cognito-user-pools-oidc-step-2-substep-9) quelli che autorizzi e richiedi nella richiesta di autenticazione del [client dell'app](user-pool-settings-client-apps.md#user-pool-settings-client-apps-scopes) e del pool di utenti.

Quando l'utente accede all'applicazione utilizzando un IdP OIDC, il pool di utenti esegue il seguente flusso di autenticazione.

1. Un utente accede alla tua pagina di accesso gestito e sceglie di accedere con il proprio IdP OIDC.

1. L'applicazione indirizza il browser dell'utente all'endpoint di autorizzazione del pool di utenti.

1. Il pool di utenti reindirizza la richiesta all'endpoint di autorizzazione dell'IdP OIDC.

1. Il tuo IdP visualizza una richiesta di accesso.

1. Nell'applicazione, la sessione dell'utente visualizza una richiesta di accesso per l'IdP OIDC.

1. L'utente inserisce le proprie credenziali per l'IdP o presenta un cookie per una sessione già autenticata.

1. Dopo l'autenticazione dell'utente, l'IdP OIDC reindirizza ad Amazon Cognito con un codice di autorizzazione.

1. Il tuo pool di utenti scambia il codice di autorizzazione con ID e token di accesso. Amazon Cognito riceve token di accesso quando configuri il tuo IdP con gli ambiti. `openid` Le affermazioni nel token ID e la `userInfo` risposta sono determinate da ambiti aggiuntivi della configurazione IdP, ad esempio `profile` e. `email`

1. Il tuo IdP emette i token richiesti.

1. Il tuo pool di utenti determina il percorso verso l'`jwks_uri`endpoint IdP dall'emittente nella URLs configurazione dell'IdP e richiede le chiavi di firma dei token dall'endpoint JSON web key set (JWKS).

1. L'IdP restituisce le chiavi di firma dall'endpoint JWKS.

1. Il tuo pool di utenti convalida i token IdP in base ai dati di firma e scadenza contenuti nei token.

1. Il tuo pool di utenti autorizza una richiesta all'endpoint `userInfo` IdP con il token di accesso. L'IdP risponde con i dati dell'utente in base agli ambiti del token di accesso.

1. Il tuo pool di utenti confronta il token ID e la `userInfo` risposta dell'IdP con le regole di mappatura degli attributi nel tuo pool di utenti. Scrive gli attributi IdP mappati negli attributi del profilo del pool di utenti.

1. Amazon Cognito genera i token di connessione dell'applicazione, che potrebbero includere i token di identità, accesso e aggiornamento.

1. L'applicazione elabora i token del pool di utenti e consente l'accesso dell'utente.

![\[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)


**Nota**  
Amazon Cognito annulla le richieste di autenticazione che non vengono completate entro 5 minuti e reindirizza l'utente all'accesso gestito. Viene visualizzato il messaggio di errore `Something went wrong` nella pagina.

OIDC è un livello di identità che si aggiunge al OAuth 2.0, che specifica i token di identità in formato JSON (JWT) emessi dalle app client OIDC (relying party). IdPs Per informazioni su come aggiungere Amazon Cognito come relying party OIDC, consultare la documentazione dell'IdP OIDC.

Quando un utente esegue l'autenticazione con una concessione del codice di autorizzazione, il pool di utenti restituisce i token ID, di accesso e di aggiornamento. [Il token ID è un token [OIDC standard per la gestione delle identità e il token di accesso è un token 2.0](http://openid.net/specs/openid-connect-core-1_0.html) standard. OAuth ](https://oauth.net/2/) Per ulteriori informazioni sui tipi di concessione che il client app del pool di utenti può supportare, consulta [Endpoint Authorize](authorization-endpoint.md).

## In che modo un pool di utenti elabora le richieste di un provider OIDC
<a name="how-a-cognito-user-pool-processes-claims-from-an-oidc-provider"></a>

Quando l'utente completa l'accesso con un provider OIDC di terze parti, l'accesso gestito recupera un codice di autorizzazione dall'IdP. Il pool di utenti scambia il codice di autorizzazione per i token di accesso e ID con l'endpoint `token` del gestore dell'identità digitale. Il pool di utenti non passa questi token all'utente o all'app, ma li utilizza per creare un profilo utente con i dati resi disponibili nelle richieste nei propri token.

 Amazon Cognito non convalida in modo indipendente il token di accesso. Richiede invece informazioni sugli attributi utente dall'endpoint `userInfo` del provider e si aspetta che la richiesta venga rifiutata se il token non è valido.

Amazon Cognito convalida il token ID del provider con i seguenti controlli:

1. Verifica che il provider abbia firmato il token con un algoritmo del seguente set: RSA, HMAC, crittografia a curva ellittica.

1. Se il provider ha firmato il token con un algoritmo di firma asimmetrico, verifica che l'ID della chiave di firma nella richiesta `kid` del token sia presente nell'endpoint `jwks_uri` del provider. Amazon Cognito aggiorna la chiave di firma dall'endpoint JWKS nella configurazione IdP per ogni token ID IdP che elabora.

1. Confronta la firma del token ID con la firma prevista in base ai metadati del provider.

1. Confronta la richiesta `iss` con l'emittente OIDC configurata per il gestore dell'identità digitale.

1. Verifica che la richiesta `aud` corrisponda all'ID client configurato nel gestore dell'identità digitale o che contenga l'ID client configurato se sono presenti più valori nella richiesta `aud`.

1. Verifica che il timestamp nella richiesta `exp` non sia anteriore all'ora corrente.

Il pool di utenti convalida il token ID, quindi tenta una richiesta all'endpoint `userInfo` del provider con il token di accesso del provider. Recupera tutte le informazioni sul profilo utente che gli ambiti definiti nel token di accesso autorizzano a leggere. Il pool di utenti cerca quindi gli attributi utente impostati come obbligatori nel pool di utenti. Per gli attributi obbligatori è necessario creare mappature degli attributi nella configurazione del provider. Il pool di utenti controlla il token ID del provider e la risposta `userInfo`. Il pool di utenti scrive tutte le richieste corrispondenti alle regole di mappatura negli attributi utente sul profilo utente del pool di utenti. Il pool di utenti ignora gli attributi che corrispondono a una regola di mappatura ma che non sono obbligatori e non sono presenti nelle richieste del provider.

# Mappatura degli attributi IdP su profili e token
<a name="cognito-user-pools-specifying-attribute-mapping"></a>

I servizi di provider di identità (IdP), incluso Amazon Cognito, in genere possono registrare più informazioni su un utente. Potresti voler sapere per quale azienda lavorano, come contattarli e altre informazioni identificative. Tuttavia, il formato utilizzato da questi attributi presenta variazioni tra i provider. Ad esempio, configura tre IdPs fornitori diversi con il tuo pool di utenti ed esamina un esempio di asserzione SAML, token ID o `userInfo` payload di ciascuno. Uno rappresenterà l'indirizzo e-mail dell'utente come`email`, un altro come e il terzo come`emailaddress`. `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`

Uno dei principali vantaggi derivanti dal consolidamento IdPs con un pool di utenti è la capacità di mappare la varietà di nomi di attributi in un unico schema di token OIDC con nomi di attributi coerenti, prevedibili e condivisi. In questo modo, gli sviluppatori non sono tenuti a mantenere la logica per l'elaborazione di una varietà complessa di eventi Single Sign-On. Questo consolidamento del formato è la mappatura degli attributi. La mappatura degli attributi del pool di utenti assegna i nomi degli attributi IdP ai nomi degli attributi del pool di utenti corrispondenti. Ad esempio, puoi configurare il tuo pool di utenti per scrivere il valore di un `emailaddress` claim nell'attributo standard del pool di utenti. `email`

Ogni IdP del pool di utenti ha uno schema di mappatura degli attributi separato. Per specificare le mappature degli attributi per il tuo IdP, configura un provider di identità del pool di utenti nella console Amazon Cognito, in un AWS SDK o nell'API REST dei pool di utenti.

## Cose da sapere sulle mappature
<a name="cognito-user-pools-specifying-attribute-mapping-requirements"></a>

Prima di iniziare a configurare la mappatura degli attributi utente, esamina i seguenti dettagli importanti.
+ Quando un utente federato effettua l'accesso all'applicazione, per ogni attributo del pool di utenti richiesto deve essere presente una mappatura. Ad esempio, se il pool di utenti richiede un attributo `email` per l'accesso, mappa questo attributo al suo equivalente del gestore dell'identità digitale (IdP).
+ Di default, gli indirizzi di posta elettronica mappati non sono verificati. Non è possibile verificare un indirizzo e-mail mappato utilizzando un codice una tantum. Tuttavia, puoi mappare un attributo del provider di identità per ottenere lo stato di verifica. Ad esempio, Google e la maggior parte dei provider OIDC includono l'attributo `email_verified`.
+ Puoi mappare i token del gestore dell'identità digitale agli attributi personalizzati nel pool di utenti. I provider social visualizzano un token di accesso, mentre i provider OIDC visualizzano un token di accesso e ID. Per mappare un token, aggiungi un attributo personalizzato con una lunghezza massima di 2.048 caratteri, concedi al client dell'app l'accesso in scrittura all'attributo e mappa `access_token` o `id_token` dal gestore dell'identità digitale all'attributo personalizzato.
+ Per ogni attributo del pool di utenti mappato, la lunghezza massima del valore (2.048 caratteri) deve essere sufficiente per il valore recuperato da Amazon Cognito dal gestore dell'identità digitale. In caso contrario, Amazon Cognito genera un errore quando gli utenti accedono alla tua applicazione. Amazon Cognito non supporta la mappatura tra token del gestore dell'identità digitale e attributi personalizzati quando i token hanno una lunghezza superiore a 2.048 caratteri.
+ Amazon Cognito ricava l'`username`attributo nel profilo di un utente federato da affermazioni specifiche approvate dal tuo IdP federato, come mostrato nella tabella seguente. Amazon Cognito, ad esempio, aggiunge questo valore di attributo al nome del tuo IdP. `MyOIDCIdP_[sub]` Se desideri che i tuoi utenti federati abbiano un attributo che corrisponda esattamente a un attributo nella tua directory utente esterna, mappalo a un attributo di accesso di Amazon Cognito come. `preferred_username`    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/cognito/latest/developerguide/cognito-user-pools-specifying-attribute-mapping.html)
+ Quando un pool di utenti non fa distinzione tra [maiuscole e minuscole](user-pool-case-sensitivity.md), Amazon Cognito converte l'attributo di origine del nome utente del nome utente in lettere minuscole nei nomi utente generati automaticamente dagli utenti federati. Di seguito è riportato un esempio di nome utente per un pool di utenti con distinzione tra maiuscole e minuscole:. `MySAML_TestUser@example.com` Quello che segue è lo stesso nome utente per un pool di utenti senza distinzione tra maiuscole e *minuscole*:. `MySAML_testuser@example.com`

  Nei pool di utenti che non fanno distinzione tra maiuscole e minuscole, i trigger Lambda che elaborano il nome utente devono tenere conto di questa modifica a qualsiasi affermazione mista per gli attributi di origine del nome utente. Per collegare il tuo IdP a un pool di utenti con un'impostazione di distinzione tra maiuscole e minuscole diversa rispetto al pool di utenti corrente, crea un nuovo pool di utenti.
+ Amazon Cognito deve essere in grado di aggiornare gli attributi mappati del bacino d'utenza quando gli utenti accedono alla tua applicazione. Quando un utente accede tramite un provider di identità, Amazon Cognito aggiorna gli attributi mappati con le informazioni più recenti del provider di identità. Amazon Cognito aggiorna gli attributi mappati solo quando i loro valori cambiano. Per garantire che Amazon Cognito possa aggiornare gli attributi, controlla i seguenti requisiti:
  + Tutti gli attributi personalizzati del pool di utenti mappati dal gestore dell'identità digitale (IdP) devono essere *mutabili*. Puoi aggiornare gli attributi personalizzati modificabili in qualsiasi momento. Al contrario, puoi impostare un valore per un attributo personalizzato *immutabile* di un utente solo quando il profilo utente viene creato. **Per creare un attributo personalizzato modificabile nella console Amazon Cognito, attiva **la casella di controllo Mutabile per l'**attributo che aggiungi quando **selezioni Aggiungi attributi personalizzati** nel menu di registrazione.** Oppure, se crei il tuo pool di utenti utilizzando l'operazione [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)API, puoi impostare il `Mutable` parametro per ciascuno di questi attributi su. `true` Se il tuo IdP invia un valore per un attributo immutabile mappato, Amazon Cognito restituisce un errore e l'accesso non riesce.
  + Nelle impostazioni del client di applicazioni, gli attributi mappati devono essere *scrivibili*. Puoi impostare gli attributi scrivibili nella pagina **Client di applicazioni** nella console Amazon Cognito. In alternativa, se crei il client dell'app utilizzando l'operazione API [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html), puoi aggiungere questi attributi alla matrice `WriteAttributes`. Se il tuo IdP invia un valore per un attributo non scrivibile mappato, Amazon Cognito non imposta il valore dell'attributo e procede con l'autenticazione.
+ Quando gli attributi IdP contengono più valori, Amazon Cognito appiattisce tutti i valori in un'unica stringa delimitata da virgole racchiusa tra parentesi quadre e. `[` `]` Il modulo URL di Amazon Cognito codifica i valori contenenti caratteri non alfanumerici ad eccezione di,, e. `.` `-` `*` `_` È necessario decodificare e analizzare i singoli valori prima di utilizzarli nell'app.
+ L'attributo di destinazione conserva qualsiasi valore che le regole di mappatura degli attributi gli assegnano, a meno che non venga modificato da un'azione amministrativa o di accesso. Amazon Cognito non rimuove gli attributi dagli utenti quando l'attributo di origine non viene più inviato nel token del provider o nell'asserzione SAML. Le seguenti azioni rimuovono il valore di un attributo dal profilo di un pool di utenti per un utente federato:

  1. L'IdP invia un valore vuoto per l'attributo di origine e una regola di mappatura applica il valore vuoto all'attributo di destinazione.

  1. Si cancella il valore dell'attributo mappato con una [DeleteUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserAttributes.html)richiesta or. [AdminDeleteUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDeleteUserAttributes.html)

## Specificazione di mappature degli attributi di provider di identità per il bacino d'utenza (Console di gestione AWS)
<a name="cognito-user-pools-specifying-attribute-mapping-console"></a>

È possibile utilizzare Console di gestione AWS per specificare le mappature degli attributi per l'IdP del pool di utenti.

**Nota**  
Amazon Cognito eseguirà la mappatura delle registrazioni in ingresso agli attributi del bacino d'utenza solo se le registrazioni esistono nel token in ingresso. Se una registrazione mappata in precedenza non esiste più nel token in ingresso, non verrà eliminata o modificata. Se l'applicazione richiede la mappatura delle attestazioni eliminate, è possibile utilizzare il trigger Lambda di preautenticazione per eliminare l'attributo personalizzato durante l'autenticazione e consentire a questi attributi di ripopolarsi dal token in ingresso.

**Specificazione della mappatura degli attributi di provider di identità social**

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

1. Nel pannello di navigazione, scegli **User Pools** (Bacini d'utenza) e seleziona i bacini d'utenza che intendi modificare.

1. Scegli il menu **Social e provider esterni**.

1. Scegli l'opzione **Add an identity provider (Aggiungi un provider di identità)** oppure scegli il provider di identità **Facebook**, **Google**, **Amazon** o **Apple** che hai configurato. Individua **Attribute mapping** (Mappatura degli attributi) e scegli **Edit** (Modifica). 

   Per ulteriori informazioni su come aggiungere un provider di identità social, consulta [Utilizzo di provider di identità social con un pool di utenti](cognito-user-pools-social-idp.md).

1. Esegui i seguenti passaggi per ciascun attributo per cui intendi eseguire la mappatura:

   1. Seleziona un attributo dalla colonna **User pool attribute** (Attributo bacino d'utenza). Questo è l'attributo assegnato al profilo utente nel bacino d'utenza. Gli attributi personalizzati vengono elencati dopo gli attributi standard.

   1. Seleziona un attributo dalla colonna ***<provider>*degli attributi**. Questo sarà l'attributo passato dalla directory del provider. Gli attributi noti del provider dei social sono forniti in un elenco a discesa.

   1. Per mappare attributi aggiuntivi tra il tuo IdP e Amazon Cognito, scegli **Add another attribute** (Aggiungi un altro attributo).

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

**Specificazione di mappatura di attributo del provider SAML**

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

1. Nel pannello di navigazione, scegli **User Pools** (Bacini d'utenza) e seleziona i bacini d'utenza che intendi modificare.

1. Scegli il menu **Social e provider esterni**.

1. Scegli l'opzione **Add an identity provider (Aggiungi un provider di identità)** oppure seleziona il provider di identità SAML configurato. Individua **Attribute mapping** (Mappatura degli attributi) e scegli **Edit** (Modifica). Per ulteriori informazioni su come aggiungere un provider di identità SAML, consulta [Utilizzo di provider di identità SAML con un pool di utenti](cognito-user-pools-saml-idp.md).

1. Esegui i seguenti passaggi per ciascun attributo per cui intendi eseguire la mappatura:

   1. Seleziona un attributo dalla colonna **User pool attribute** (Attributo bacino d'utenza). Questo è l'attributo assegnato al profilo utente nel bacino d'utenza. Gli attributi personalizzati vengono elencati dopo gli attributi standard.

   1. Seleziona un attributo dalla colonna **SAML attribute** (attributo SAML). Questo sarà l'attributo passato dalla directory del provider.

      Il provider di identità potrebbe offrire esempi di asserzioni SAML come riferimento. Alcuni IdPs utilizzano nomi semplici, ad esempio`email`, mentre altri utilizzano nomi di attributi in formato URL simili a:

      ```
      http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
      ```

   1. Per mappare attributi aggiuntivi tra il tuo IdP e Amazon Cognito, scegli **Add another attribute** (Aggiungi un altro attributo).

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

## Specificare le mappature degli attributi del provider di identità per il pool di utenti (e l'API)AWS CLI AWS
<a name="cognito-user-pools-specifying-attribute-mapping-cli-api"></a>

Il seguente corpo della richiesta per [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)o [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)mappa gli attributi "MyIdP» del provider SAML e `phone` gli attributi `emailaddress` del pool di utenti e `email` `birthdate``phone_number`, in quest'ordine. `birthdate` Si tratta di un corpo di richiesta completo per un provider SAML 2.0: il corpo della richiesta varierà a seconda del tipo di IdP e dei dettagli specifici. La mappatura degli attributi si trova nel parametro. `AttributeMapping`

```
{
   "AttributeMapping": { 
      "email" : "emailaddress",
      "birthdate" : "birthdate",
      "phone_number" : "phone"
   },
   "IdpIdentifiers": [ 
      "IdP1",
      "pdxsaml"
   ],
   "ProviderDetails": { 
      "IDPInit": "true", 
      "IDPSignout": "true", 
      "EncryptedResponses" : "true", 
      "MetadataURL": "https://auth.example.com/sso/saml/metadata", 
      "RequestSigningAlgorithm": "rsa-sha256"
   },
   "ProviderName": "MyIdP",
   "ProviderType": "SAML",
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

Utilizza i seguenti comandi per specificare le mappature degli attributi del provider di identità per il bacino d'utenza.

**Specificazione di mappature degli attributi al momento della creazione del provider**
+ AWS CLI: `aws cognito-idp create-identity-provider`

  Esempio con file di metadati: `aws cognito-idp create-identity-provider --user-pool-id <user_pool_id> --provider-name=SAML_provider_1 --provider-type SAML --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`

  Dove `details.json` contiene:

  ```
  { 
      "MetadataFile": "<SAML metadata XML>"
  }
  ```
**Nota**  
Se *<SAML metadata XML>* contiene delle virgolette (`"`), queste devono essere escluse (). `\"`

  Esempio con URL di metadati:

  ```
  aws cognito-idp create-identity-provider \
  --user-pool-id us-east-1_EXAMPLE \
  --provider-name=SAML_provider_1 \
  --provider-type SAML \
  --provider-details MetadataURL=https://myidp.example.com/saml/metadata \
  --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
  ```
+ API/SDK: [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)

**Specificazione delle mappature degli attributi per un provider di identità esistente**
+ AWS CLI: `aws cognito-idp update-identity-provider`

  Ad esempio: `aws cognito-idp update-identity-provider --user-pool-id <user_pool_id> --provider-name <provider_name> --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`
+ API/SDK: [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)

**Acquisizione di informazioni sulla mappatura degli attributi per un provider di identità specifico**
+ AWS CLI: `aws cognito-idp describe-identity-provider`

  Ad esempio: `aws cognito-idp describe-identity-provider --user-pool-id <user_pool_id> --provider-name <provider_name>`
+ API/SDK: [DescribeIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html)

# Collegamento di utenti federati a un profilo utente esistente
<a name="cognito-user-pools-identity-federation-consolidate-users"></a>

Spesso, lo stesso utente ha un profilo con più provider di identità (IdPs) che hai collegato al tuo pool di utenti. Amazon Cognito può collegare ogni occorrenza di un utente allo stesso profilo utente nella directory. In questo modo, una persona con più utenti IdP può avere un'esperienza coerente con la tua app. [AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html)indica ad Amazon Cognito di riconoscere l'ID univoco di un utente nella tua directory federata come utente del pool di utenti. Un utente nel pool di utenti conta come un utente attivo mensile (MAU) ai fini della [fatturazione](https://aws.amazon.com/cognito/pricing/) quando hai zero o più identità federate associate al profilo utente.

Quando un utente federato accede al tuo pool di utenti per la prima volta, Amazon Cognito cerca un profilo locale che hai collegato alla sua identità. Se non esiste alcun profilo collegato, il tuo pool di utenti crea un nuovo profilo. Puoi creare un profilo locale e collegarlo al tuo utente federato in qualsiasi momento prima del primo accesso, in una richiesta `AdminLinkProviderForUser` API, in un'attività di preconfigurazione pianificata o in una. [Trigger Lambda di pre-registrazione](user-pool-lambda-pre-sign-up.md) Dopo che l'utente ha effettuato l'accesso e Amazon Cognito ha rilevato un profilo locale collegato, il pool di utenti legge le dichiarazioni dell'utente e le confronta con le regole di mappatura per l'IdP. Il tuo pool di utenti aggiorna quindi il profilo locale collegato con le attestazioni mappate in base al loro accesso. In questo modo, puoi configurare il profilo locale con le attestazioni di accesso e conservare le relative dichiarazioni di identità up-to-date presso il tuo provider. Dopo che Amazon Cognito ha associato il tuo utente federato a un profilo collegato, quest'ultimo accede sempre a quel profilo. Puoi quindi collegare più identità di provider del tuo utente allo stesso profilo, offrendo a un cliente un'esperienza coerente con la tua app. Per collegare un utente federato che ha precedentemente effettuato l'accesso, devi prima eliminare il suo profilo esistente. Puoi identificare i profili esistenti in base al loro formato: `[Provider name]_identifier`. Ad esempio, `LoginWithAmazon_amzn1.account.AFAEXAMPLE`. Un utente che hai creato e poi collegato a un'identità utente di terze parti ha lo stesso nome utente con cui è stato creato e un `identities` attributo che contiene i dettagli delle identità collegate.

**Importante**  
Poiché `AdminLinkProviderForUser` consente a un utente con un'identità federata esterna di accedere come utente esistente nel pool di utenti, è fondamentale che venga utilizzato solo con attributi esterni IdPs e del provider considerati attendibili dal proprietario dell'applicazione.

Ad esempio, se sei un fornitore di servizi gestiti (MSP) con un'app che condividi con più clienti. Ciascun cliente accede all'app tramite Active Directory Federation Services (ADFS). L'amministratore IT, Carlos, ha un account in ciascuno dei domini dei clienti. Vuoi che Carlos venga riconosciuto come amministratore dell'app ogni volta che accede, indipendentemente dal gestore dell'identità digitale (IdP).

Il tuo ADFS IdPs presenta l'indirizzo e-mail di Carlos `msp_carlos@example.com` nel `email` reclamo delle affermazioni SAML di Carlos ad Amazon Cognito. Crei quindi un utente nel pool di utenti con il nome utente.`Carlos`. I seguenti comandi AWS Command Line Interface (AWS CLI) collegano le identità di Carlos da, e. IdPs ADFS1 ADFS2 ADFS3

**Nota**  
È possibile collegare un utente in base alle asserzioni di attributi specifici. Questa capacità è esclusiva di OIDC e SAML. IdPs Per altri tipi di gestori, è necessario collegarsi in base a un attributo di origine fisso. Per ulteriori informazioni, consulta [AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html). È necessario impostare `ProviderAttributeName` su `Cognito_Subject` quando colleghi un IdP social a un profilo utente. `ProviderAttributeValue` deve essere l'identificatore univoco dell'utente con l'IdP.

```
aws cognito-idp admin-link-provider-for-user \
--user-pool-id us-east-1_EXAMPLE \
--destination-user ProviderAttributeValue=Carlos,ProviderName=Cognito \
--source-user ProviderName=ADFS1,ProviderAttributeName=email,ProviderAttributeValue=msp_carlos@example.com

aws cognito-idp admin-link-provider-for-user \
--user-pool-id us-east-1_EXAMPLE \
--destination-user ProviderAttributeValue=Carlos,ProviderName=Cognito \
--source-user ProviderName=ADFS2,ProviderAttributeName=email,ProviderAttributeValue=msp_carlos@example.com

aws cognito-idp admin-link-provider-for-user \
--user-pool-id us-east-1_EXAMPLE \
--destination-user ProviderAttributeValue=Carlos,ProviderName=Cognito \
--source-user ProviderName=ADFS3,ProviderAttributeName=email,ProviderAttributeValue=msp_carlos@example.com
```

Il profilo utente `Carlos` nel pool di utenti ora dispone del seguente attributo `identities`.

```
[{
    "userId": "msp_carlos@example.com",
    "providerName": "ADFS1",
    "providerType": "SAML",
    "issuer": "http://auth.example.com",
    "primary": false,
    "dateCreated": 111111111111111
}, {
    "userId": "msp_carlos@example.com",
    "providerName": "ADFS2",
    "providerType": "SAML",
    "issuer": "http://auth2.example.com",
    "primary": false,
    "dateCreated": 111111111111111
}, {
    "userId": "msp_carlos@example.com",
    "providerName": "ADFS3",
    "providerType": "SAML",
    "issuer": "http://auth3.example.com",
    "primary": false,
    "dateCreated": 111111111111111
}]
```

**Informazioni importanti sul collegamento di utenti federati**
+ È possibile collegare fino a cinque utenti federati a ciascun profilo utente.
+ Puoi collegare gli utenti a ciascun IdP da un massimo di cinque attestati di attributo IdP, come definito dal `ProviderAttributeName` parametro di `SourceUser` in una richiesta API. `AdminLinkProviderForUser` Ad esempio, se hai collegato almeno un utente agli attributi di origine`email`,`phone`, `department` `given_name``location`, e puoi collegare solo altri utenti su uno di questi cinque attributi.
+ È possibile collegare utenti federati a un profilo utente federato esistente o a un utente locale.
+ Non è possibile collegare i provider ai profili utente in Console di gestione AWS.
+ Il token ID dell'utente contiene tutti i gestori associati nell'asserzione `identities`.
+ Puoi impostare una password per il profilo utente federato creato automaticamente in una richiesta API. [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html) Lo stato dell'utente cambia quindi da `EXTERNAL_PROVIDER` a `CONFIRMED`. Un utente in questo stato può accedere come utente federato e avviare flussi di autenticazione nell'API come un utente locale collegato. Possono anche modificare la password e gli attributi nelle richieste API autenticate da token come e. [ChangePassword[UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ChangePassword.html) Come best practice di sicurezza e per mantenere gli utenti sincronizzati con il tuo IdP esterno, non impostare la password per i profili di utenti federati. Collega invece gli utenti ai profili locali con `AdminLinkProviderForUser`.
+ Amazon Cognito compila gli attributi utente in un profilo utente locale collegato quando l'utente accede tramite il proprio gestore dell'identità digitale. Amazon Cognito elabora le dichiarazioni di identità nel token ID di un IdP OIDC e controlla anche `userInfo` l'endpoint dei provider 2.0 e OIDC. OAuth Amazon Cognito assegna la priorità alle informazioni in un token ID rispetto alle informazioni di `userInfo`.

Quando scopri che il tuo utente non utilizza più un account utente esterno che hai collegato al suo profilo, puoi dissociare quell'account utente dal tuo utente del pool di utenti. Quando hai collegato il tuo utente, hai fornito il nome dell'attributo utente, il valore dell'attributo e il nome del provider nella richiesta. Per rimuovere un profilo di cui l'utente non ha più bisogno, effettua una richiesta API con parametri equivalenti. [AdminDisableProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDisableProviderForUser.html)

[AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html)Per ulteriori esempi e sintassi dei comandi, vedere. AWS SDKs