View a markdown version of this page

Avvio della sessione SAML nei bacini d'utenza 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à.

Avvio della sessione SAML nei bacini d'utenza di Amazon Cognito

Amazon Cognito supporta Single Sign-On (SSO) e SSO (Service Provider-InitiatedSP-initiated). IdP-initiated Come migliore pratica di sicurezza, implementa l'SSO nel tuo pool di utenti. SP-initiated La sezione 5.1.2 della panoramica V2.0 tecnica SAML descrive l'SSO. SP-initiated 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 SP-initiated flusso, 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 IdP-initiated supportare l'SSO. Quando supporti IdP-initiated l'autenticazione, Amazon Cognito non può verificare di aver richiesto la risposta SAML che riceve perché Amazon Cognito non avvia l'autenticazione con una richiesta SAML. In SP-initiated SSO, Amazon Cognito imposta parametri di stato che convalidano una risposta SAML rispetto alla richiesta originale. Con SP-initiated l'accesso puoi anche proteggerti dalla falsificazione delle richieste tra siti (CSRF).

Implementa l' SP-initated accesso SAML

Come best practice, implementa l'accesso avviato dal fornitore di servizi () SP-initiated nel 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 IdP-initiated l'accesso a determinate condizioni.

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

Diagramma del flusso di autenticazione dell'accesso ad Amazon SP-initiated Cognito SAML.
  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.

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

  3. Amazon Cognito reindirizza l'utente all'IdP con una richiesta SAML, facoltativamente firmata, in un elemento. AuthnRequest

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

  5. L'IdP reindirizza l'utente all'endpoint di risposta SAML del pool di utenti con l'asserzione SAML crittografata facoltativamente nel payload POST.

    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

  6. Dopo aver verificato l'asserzione SAML e aver mappato gli attributi utente 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.

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

  8. 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à. OIDC-based Il token di accesso è un oggetto di autorizzazione con ambiti OAuth 2.0. 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.

Implementa l' IdP-initiated accesso SAML

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

Diagramma del flusso di autenticazione dell'accesso ad Amazon IdP-initiated Cognito SAML.
  1. Un utente richiede l'accesso SAML con la tua applicazione.

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

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

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

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

  6. Amazon Cognito rilascia un codice di autorizzazione all'utente.

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

  8. 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 IdP-initiated SAML 2.0.

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

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

  3. Configura il tuo IdP per supportare l'avvio dell'IdP. IdP-initiated SAML introduce considerazioni sulla sicurezza a cui gli 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. IdP-initiated

  4. Associa il tuo provider IdP-initiated SAML a un client di app nel tuo pool di utenti.

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

  6. Indirizza il tuo utente all'endpoint del tuo pool di utenti con la sua asserzione SAMLsaml2/idpresponse.

  7. Ricevi token web JSON (JWT).

Per accettare asserzioni SAML non richieste nel tuo pool di utenti, devi considerarne l'effetto sulla sicurezza dell'app. Quando si accettano le richieste, è probabile che si verifichino tentativi di contraffazione delle richieste e tentativi di CSRF. IdP-initiated Sebbene il tuo pool di utenti non sia in grado di verificare una sessione di IdP-initiated accesso, 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 IdP-initiated SAML al tuo. /saml2/idpresponse Per gestire SP-initiated le richieste di autorizzazione all'accesso, 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 IdP-initiated SAML, 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 IdP-initiated SAML.

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 IdP-initiated
  1. Crea un pool di utenti, un client di app e un provider di identità SAML.

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

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

  4. Modifica o aggiungi un provider SAML.

  5. In Accesso IdP-initiated SAML, scegli Accetta SP-initiated e IdP-initiated asserzioni SAML.

  6. Scegli Save changes (Salva modifiche).

API/CLI

Per configurare un IdP per SAML IdP-initiated

Configura IdP-initiated SAML con il IDPInit parametro in una richiesta CreateIdentityProvidero UpdateIdentityProviderAPI. Di seguito è riportato un esempio ProviderDetails di IdP che supporta IdP-initiated SAML.

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