Salta al contenuto

Come posso integrare e configurare in modo sicuro Amazon Cognito con gestori dell'identità digitale SAML esterni?

3 minuti di lettura
0

Desidero configurare il mio pool di utenti Amazon Cognito per utilizzare asserzioni SAML crittografate dal mio gestore dell'identità digitale SAML esterno. Desidero che l'autenticazione utente per la mia applicazione sia sicura.

Risoluzione

Aggiungi un gestore dell'identità digitale SAML al pool di utenti

Se non disponi di un pool di utenti Amazon Cognito, consulta Nozioni di base sui pool di utenti. Dopo aver creato il pool di utenti, configura l'applicazione SAML sul lato gestore dell'identità digitale. Per aggiungere un gestore dell'identità digitale SAML al pool di utenti Amazon Cognito, consulta Aggiungere e gestire i gestori dell'identità digitale SAML in un pool di utenti.

Fornisci il certificato di crittografia al gestore dell'identità digitale SAML per inviare asserzioni SAML crittografate ad Amazon Cognito

Prima di tutto, scarica il certificato di crittografia dalla console Amazon Cognito. Quindi, nell'interfaccia di configurazione del gestore dell'identità digitale SAML, importa il certificato di crittografia. Consulta la documentazione del gestore dell'identità digitale per istruzioni su come importare e attivare il certificato di crittografia. Ad esempio, consulta Configurare la crittografia del token nell'interfaccia di amministrazione di Microsoft Entra sul sito web Microsoft Learn.

Verifica il flusso di asserzioni SAML crittografato

Completa i seguenti passaggi:

  1. Apri gli strumenti per sviluppatori del browser e crea un file HTTP Archive (HAR).
  2. Accedi alla pagina di accesso gestito del pool di utenti Amazon Cognito.
  3. Seleziona SAML IdP (Gestore identità digitale SAML). Amazon Cognito reindirizza alla pagina di accesso del gestore dell'identità digitale.
  4. Nel file HAR, recupera la richiesta di asserzione SAML inviata dal gestore dell'identità digitale all'endpoint saml2/idpresponse.
  5. Nel browser, visualizza la risposta all'asserzione SAML dal file HAR.

Esempio di risposta SAML decodificata con un'asserzione SAML crittografata:

<saml:EncryptedAssertion>
    <xenc:EncryptedData
        xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
        Type="http://www.w3.org/2001/04/xmlenc#Element">
        <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>
        <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
            <xenc:EncryptedKey>
                <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"/>
                <xenc:CipherData>
                    <xenc:CipherValue>
                        <!-- Encrypted key data -->
                        hY7PK8L9eM+2Uw7....[abbreviated]....4nmB2gTfLwqX=
                    </xenc:CipherValue>
                </xenc:CipherData>
            </xenc:EncryptedKey>
        </ds:KeyInfo>
        <xenc:CipherData>
            <xenc:CipherValue>
                <!-- Encrypted assertion data -->
                kB4urcHh7K5HHJ....[abbreviated]....8JpWGpfTj=
            </xenc:CipherValue>
        </xenc:CipherData>
    </xenc:EncryptedData>
</saml:EncryptedAssertion>

Esempio di risposta SAML decodificata senza crittografia:

<saml:Assertion
    ID="ASRT#########"
    Version="2.0"
    IssueInstant="2024-07-10T10:00:00Z">

    <saml:Issuer>https://idp.example.com/saml</saml:Issuer>

    <saml:Subject>
        <saml:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">
            USER123456789
        </saml:NameID>
        <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
            <saml:SubjectConfirmationData
                NotOnOrAfter="2024-07-10T11:00:00Z"
                Recipient="https://app.example.com/saml/acs"/>
        </saml:SubjectConfirmation>
    </saml:Subject>

    <saml:Conditions
        NotBefore="2024-07-10T10:00:00Z"
        NotOnOrAfter="2024-07-10T11:00:00Z">
        <saml:AudienceRestriction>
            <saml:Audience>https://app.example.com/saml</saml:Audience>
        </saml:AudienceRestriction>
    </saml:Conditions>

    <saml:AuthnStatement
        AuthnInstant="2024-07-10T10:00:00Z"
        SessionNotOnOrAfter="2024-07-10T18:00:00Z"
        SessionIndex="SESSION123456789">
        <saml:AuthnContext>
            <saml:AuthnContextClassRef>
                urn:oasis:names:tc:SAML:2.0:ac:classes:Password
            </saml:AuthnContextClassRef>
        </saml:AuthnContext>
    </saml:AuthnStatement>

    <saml:AttributeStatement>
        <saml:Attribute Name="uid"
            NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
            <saml:AttributeValue>user123</saml:AttributeValue>
        </saml:Attribute>
        <saml:Attribute Name="email"
            NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
            <saml:AttributeValue>user@example.com</saml:AttributeValue>
        </saml:Attribute>
        <saml:Attribute Name="roles"
            NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
            <saml:AttributeValue>user</saml:AttributeValue>
            <saml:AttributeValue>admin</saml:AttributeValue>
        </saml:Attribute>
    </saml:AttributeStatement>
</saml:Assertion>

Nota: l'elemento saml:EncryptedAssertion nella risposta conferma che hai un'asserzione SAML crittografata. Solo il gestore dell'identità digitale può decrittografare e leggere i contenuti delle asserzioni con la chiave privata corretta. Se saml:EncryptedAssertion non è presente nella risposta, hai un'asserzione SAML non crittografata che mostra i dettagli dell'utente e dell'autenticazione in chiaro.

Informazioni correlate

Utilizzo di gestori dell'identità digitale SALM con un pool di utenti

How to set up Amazon Cognito for federated authentication using Azure AD (Configurazione di Amazon Cognito per l'autenticazione federata utilizzando Azure AD)

Configurare le asserzioni SAML per la risposta di autenticazione

AWS UFFICIALEAggiornata 3 mesi fa