View a markdown version of this page

Cose da sapere su SAML IdPs nei pool di utenti di Amazon Cognito - Amazon Cognito

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

Cose da sapere su SAML IdPs nei pool di utenti di Amazon Cognito

L'implementazione di un IdP SAML 2.0 comporta alcuni requisiti e restrizioni. Fai riferimento a questa sezione quando stai implementando il tuo IdP. Troverai anche informazioni utili per risolvere gli 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 IdP-initiated single sign-on (SSO) come descritto nelle sezioni 5.1.2 SP-initiated e 5.1.4 della panoramica tecnica SAML. V2.0

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.

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

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

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.

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 al proprio 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 in Panoramica del pool di utenti nella console Amazon Cognito.

Mappa tutti gli attributi richiesti

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, consultareMappatura degli attributi IdP a profili e token.

Il formato dell'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 entro. NameID In caso di NameID modifiche, Amazon Cognito considera l'asserzione riferita a un nuovo utente. L'attributo impostato NameID nella configurazione dell'IdP deve avere un valore persistente. Per assegnare gli utenti SAML a un profilo utente coerente nel tuo pool di utenti, assegna il NameID claim a partire da 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 nel tuo NameID claim IdP urn:oasis:names:tc:SAML:1.1:nameid-format:persistent indica che il tuo IdP sta passando un valore immutabile. Amazon Cognito non richiede questo formato di dichiarazione e assegna un formato urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified se il tuo IdP non specifica un formato del reclamo. NameID Questo comportamento è conforme alla sezione 2.2.2 Complex Type NameIDType, 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 SP-initiated single sign-on, un Response elemento con un valore pari all'ID della richiesta SAML originaleInResponseTo.

    <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

    IdP-initiated Le asserzioni SAML non devono contenere un valore. InResponseTo

  • Un SubjectConfirmationData elemento con un Recipient valore dell'saml2/idpresponseendpoint del pool di utenti e, per SP-initiated SAML, un InResponseTo valore che corrisponde all'ID della richiesta SAML originale.

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

Quando Endpoint Authorize 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 chiavi asimmetrica e un certificato di firma per una firma digitale che Amazon Cognito assegna alle richieste SAML. Ogni IdP SAML esterno configurato per supportare una 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 and external providers nella console Amazon Cognito.

Per stabilire l'attendibilità delle 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 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 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.

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

Codifica caratteri non alfanumerici

Amazon Cognito non accetta UTF-8 caratteri da 4 byte simili 😐 o trasmessi dal tuo IdP 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 dei metadati deve avere un livello di sicurezza valido a livello di trasporto

Se InvalidParameterException durante la creazione di un IdP SAML con l'URL di un endpoint di metadati HTTPS viene visualizzato, ad esempio, «Errore nel recupero dei metadati da»<metadata endpoint>, assicurati che l'endpoint di metadati abbia SSL impostato correttamente e che sia associato un certificato SSL valido. Per ulteriori informazioni SSL/TLS sulla convalida dei certificati, vedi Cos'è un certificato? https://aws.amazon.com/what-is/ssl-certificate/.

L'endpoint dei metadati deve trovarsi sulla porta TCP standard per HTTP o HTTPS

Amazon Cognito accetta solo URL di metadati per provider SAML sulle porte TCP standard 80 per HTTP e 443 per HTTPS. Come best practice di sicurezza, ospita i metadati SAML in un URL con il prefisso. TLS-encrypted https:// Inserisci gli URL dei metadati nel formato o. http://www.example.com/saml2/metadata.xml https://www.example.com/saml2/metadata.xml La console Amazon Cognito accetta gli URL di metadati solo con il prefisso. https:// Puoi anche configurare i metadati IdP con e. CreateIdentityProvider UpdateIdentityProvider

I client dell'app con IdP-initiated SAML possono accedere solo con SAML

Quando attivi il supporto per un IdP SAML 2.0 che supporta l' IdP-initiated accesso a un client di app, puoi aggiungere solo altri SAML 2.0 IdPs a quel client di app. Ti viene impedito di aggiungere la directory degli utenti nel pool di utenti e tutti i provider di identità esterni non SAML a un client dell'app configurato in questo modo.

Le risposte di disconnessione devono utilizzare l'associazione POST

L'/saml2/logoutendpoint accetta LogoutResponse come HTTP POST richieste. I pool di utenti non accettano risposte di disconnessione vincolantiHTTP GET.

Rotazione del certificato 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 dei metadati per pubblicare sia il certificato originale che quello nuovo per almeno sei ore. Quando Amazon Cognito aggiorna la cache dall'URL dei metadati, considera ogni certificato valido e il tuo IdP SAML può iniziare a firmare asserzioni SAML con il nuovo certificato. Trascorso questo periodo, puoi rimuovere il certificato originale dai metadati pubblicati.