

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo di provider di identità 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).