SSO (single sign-on)

Con SSO (single sign-on) per Cloud Foundry, puoi fornire un'esperienza di autenticazione senza problemi tra più applicazioni web. Se SSO è attivo quando un utente esegue inizialmente l'accesso, non gli verrà richiesto di reimmettere le sue credenziali la volta successiva che eseguirà l'accesso. Verrà invece automaticamente eseguito per essi l'accesso alle tue applicazioni protette dalla stessa istanza App ID.

App ID fornisce SSO per gli utenti Cloud Directory. Se si utilizza un provider di identità sociale o federato SAML, l'SSO è gestito da tale provider e App ID lo rispetta.

Modalità di funzionamento

Consulta il seguente diagramma per vedere SSO in azione.

caption-side=bottom"
SSO di cloud directory*

  1. Un utente Cloud Directory esegue l'accesso alla tua applicazione per la prima volta.
  2. Gli viene chiesto di eseguire l'autenticazione fornendo un nome utente oppure una email e una password.
  3. Se le credenziali sono valide, un utente accede alla tua applicazione. Allo stesso tempo, App ID, crea una sessione e imposta un cookie sul browser dell'utente.
  4. Se un utente tenta di firmare in una delle tue altre applicazioni, App ID rileva il cookie di sessione e firma automaticamente l'utente nella tua app. App ID i cookie di sessione sono specifici di istanza e sono firmati dal tasto privato unico dell'istanza.

Al momento, l'SSO Cloud Directory è configurato per essere utilizzato quando Cloud Directory è l'unico provider di identità abilitato. Se la tua istanza di App ID è configurata per utilizzare più provider di identità, l'abilitazione dell'SSO non ha effetto sul flusso di accesso. Agli utenti viene richiesto di immettere le loro credenziali Cloud Foundry o di scegliere uno degli altri provider ad ogni accesso.

Configurazione di SSO

Puoi configurare SSO (single sign-on) utilizzando il dashboard App ID oppure utilizzando le API.

Con la GUI

Puoi configurare l'SSO mediante la GUI.

  1. Passa alla scheda Cloud Directory > Single Sign-on del dashboard App ID.

  2. Modifica Enable single sign-on su Enabled.

  3. Imposta la quantità di tempo per cui un utente può essere inattivo prima che la sessione SSO scada. Quando scade, l'utente deve eseguire nuovamente l'accesso. Il tempo è specificato in minuti e il tempo massimo consentito per l'inattività è 10.080 minuti (7 giorni). Il tempo predefinito è 1440 minuti, che è l'equivalente di 1 giorno.

  4. Aggiungi i tuoi URI di reindirizzamento alla casella Logout redirect URI e fai clic sul segno +. Assicurati di registrare solo applicazioni che ritieni attendibili. Registrando l'URI, stai autorizzando App ID a eseguirne l'inclusione nel flusso di lavoro di autorizzazione.

  5. Fare clic su Salva.

Con l'API

Utilizzando l'API di amministrazione della configurazione di SSO per definire tre impostazioni, puoi attivare la funzione.

Una chiamata di esempio:

{
  "isActive": true,
  "inactivityTimeoutSeconds": 86400,
  "logoutRedirectUris": [
    "http://my-first-app.com/after_logout",
    "http://my-second-app.com/after_logout"
  ]
}
Impostazioni di configurazione SSO
Impostazione Definizione
isActive Per abilitare SSO, impostare questo valore su true. L'impostazione predefinita è false.
inactivityTimeoutSeconds Il periodo di tempo più lungo che può trascorrere senza alcuna attività dell'utente prima che a quest'ultimo venga richiesto di reimmettere le sue credenziali. Questo valore è specificato in secondi e può essere al massimo 604800 seconds (7 giorni). L'impostazione predefinita è 86400 seconds (1 giorno).
logoutRedirectUris Un elenco separato da virgole di URI consentiti a cui App ID può reindirizzare i tuoi utenti dopo che si sono disconnessi.

Configurazione della disconnessione

Con App ID, puoi terminare la sessione SSO di un utente per il suo browser corrente. Se l'utente accede all'endpoint API dal suo browser, la sua sessione viene terminata e all'utente viene richiesto di immettere le sue credenziali al suo successivo tentativo di accesso in tale browser per una qualsiasi delle tue applicazioni.

Quando si avvia uno dei flussi correlati alla modifica, alla reimpostazione o al rinnovo di una password, le sessioni su tutti i client vengono terminate automaticamente per l'utente.

Utilizzando l'API

Per disconnettere un utente, reindirizzane il browser utilizzando le tue informazioni per completare la seguente chiamata API.

https://<region>.appid.cloud.ibm.com/oauth/v4/<tenantID>/cloud_directory/sso/logout?redirect_uri=<redirectURI>&client_id=<clientID>
Variabili della chiamata API SSO sign-out
Variabile Valore
region La regione in cui viene eseguito il provisioning della tua istanza di App ID. Ulteriori informazioni sulle regioni disponibili.
tenantID L'identificativo univoco per la tua istanza di App ID. Questo valore si trova nella scheda Credenziali di servizio della dashboard App ID. Se non disponi di una serie di credenziali di servizio, puoi crearne una e prendere il valore da essa.
redirectURI Un URI che è stato specificato nella configurazione SSO mediante il dashboard App ID. Per motivi di sicurezza, se non specifichi un valore, non è possibile eseguire un reindirizzamento e viene visualizzato un errore.
clientID L'ID client della tua applicazione.

Anche se la sessione SSO viene terminata, a un utente con un token di accesso valido memorizzato nella sua sessione potrebbe non essere richiesto di immettere nuovamente le sue credenziali finché non scade il suo token. Per impostazione predefinita il token scade dopo 1 ora.

Utilizzando l'SDK server Node.js

Puoi anche utilizzare l'SDK server Node.js App ID per gestire automaticamente il reindirizzamento per tuo conto.

  1. Impostare logoutSSO come metodo. Ad esempio:

    let webAppStrategy = new WebAppStrategy(.....);
    ....
    webAppStrategy.logoutSSO();
    
  2. Configura logout.

    app.get('/logoutSSO', (req, res) => {
       res.clearCookie("refreshToken");
       webAppStrategy.logoutSSO(req,res, { "redirect_uri": "https://my-app.com/after_logout" });
       });
    

Terminazione di tutte le sessioni per un utente

In quanto amministratore, puoi terminare tutte le sessioni SSO per un'utente utilizzando le API di amministrazione di App ID. Le API sono protette da un token Cloud IAM.

Richiesta API di esempio:

POST https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/Users/<userID>/sso/logout
Headers:
Authorization: Bearer <IAMToken>
Content-Type: application/json
Variabili necessarie per terminare tutte le sessioni SSO di un utente
Variabile Valore
Content-Type Il tipo di contenuto della richiesta. Il valore accettato è application/json.
region La regione in cui viene eseguito il provisioning della tua istanza di App ID. Ulteriori informazioni sulle regioni disponibili.
tenantID L'identificativo univoco per la tua istanza di App ID. Questo valore si trova nella scheda Credenziali di servizio della dashboard App ID. Se non disponi di una serie di credenziali di servizio, puoi crearne una e prendere il valore da essa.
userID L'identificativo univoco per un utente Cloud Directory. Puoi ottenere l'ID utilizzando le API degli utenti di Cloud Directory, oppure visualizzando il token di identità dell'utente.

Quando si richiama questa API, tutte le sessioni SSO dell'utente specificato vengono invalidate. Questo significa che, la prossima volta che l'utente prova ad eseguire l'accesso a una qualsiasi delle tue applicazioni, da un dispositivo o da un browser, gli verrà richiesto di reimmettere le sue credenziali.