Informazioni sull'accesso Single Sign-On

SI APPLICA A: SDK v4

Single Sign-On (SSO) consente di condividere l'accesso alle risorse tra applicazioni indipendenti. Ad esempio, un utente potrebbe accedere a un servizio in un bot radice e il bot radice potrebbe condividere il token di accesso con un bot di competenza. Attualmente è supportato solo il provider di identità Microsoft Entra ID .

SSO si applica agli scenari seguenti:

  • Un bot radice e uno o più bot di competenza. L'utente accede dal bot radice. Il bot richiama quindi più competenze per conto dell'utente.
  • Controllo chat Web incorporato in un sito Web. L'utente accede dal sito Web. che quindi richiama un bot o una competenza per conto dell'utente.

SSO offre i vantaggi seguenti:

  • L'utente non deve accedere più volte.
  • Il bot radice o il sito Web non deve conoscere le autorizzazioni dell'utente.

Nota

SSO è disponibile in Bot Framework SDK versione 4.8 e successive.

Interazione dei componenti per SSO

I diagrammi di sequenza temporale seguenti mostrano le interazioni tra i diversi componenti per SSO.

  • Il diagramma seguente illustra il flusso per un bot radice.

    Diagramma di sequenza SSO per un bot radice.

  • Il diagramma seguente illustra il flusso e il flusso di fallback per un controllo chat Web.

    Diagramma di sequenza SSO per un controllo chat Web.

    Se lo scambio di token ha esito negativo, il fallback richiede all'utente di accedere. Tali errori possono verificarsi quando sono necessarie autorizzazioni aggiuntive o il token è per il servizio errato.

Analizziamo il flusso.

  1. Il client avvia una conversazione con il bot che attiva uno scenario OAuth.

  2. Il bot restituisce una scheda OAuth al client.

  3. Il client intercetta la scheda OAuth prima di visualizzarla all'utente e controlla se contiene una proprietà TokenExchangeResource.

  4. Se la proprietà esiste, il client invia un oggetto TokenExchangeInvokeRequest al bot. Il client deve avere un token scambiabile per l'utente, che deve essere un token ID Microsoft Entra e il cui gruppo di destinatari deve essere uguale TokenExchangeResource.Uri alla proprietà . Il client invia al bot un'attività Invoke con il corpo illustrato di seguito.

    {
        "type": "Invoke",
        "name": "signin/tokenExchange",
        "value": {
            "id": "<any unique ID>",
            "connectionName": "<connection Name on the skill bot (from the OAuth Card)>",
            "token": "<exchangeable token>"
        }
    }
    
  5. Il bot elabora la richiesta TokenExchangeInvokeRequest e restituisce una risposta TokenExchangeInvokeResponse al client. Il client deve attendere fino a quando non riceve l'oggetto TokenExchangeInvokeResponse.

    {
        "status": "<response code>",
        "body": {
            "id":"<unique ID>",
            "connectionName": "<connection Name on the skill bot (from the OAuth Card)>",
            "failureDetail": "<failure reason if status code isn't 200, null otherwise>"
        }
    }
    
  6. Se ha TokenExchangeInvokeResponse un status di 200, il client non visualizza la scheda OAuth. Vedere il diagramma relativo al flusso normale. Per qualsiasi altro status o se TokenExchangeInvokeResponse non viene ricevuto, il client mostra la scheda OAuth all'utente. Vedere il diagramma del flusso di fallback. In questo modo il flusso SSO torna al normale flusso OAuthCard, in caso di errori o dipendenze non soddisfatte, ad esempio il consenso dell'utente.

Passaggi successivi