Share via


Single Sign-On con un chat Web

SI APPLICA A: SDK v4

Single Sign-On (SSO) consente a un client, ad esempio un controllo chat Web, di comunicare con un bot per conto dell'utente. Attualmente è supportato solo il provider di identità Microsoft Entra ID .

In genere, un chat Web è incorporato in una pagina del sito Web. Quando l'utente accede al sito Web, il chat Web richiama un bot per conto dell'utente. Il token del client del sito Web, in base alle credenziali dell'utente, viene scambiato per un altro per accedere al bot. In questo modo, l'utente non deve accedere due volte; la prima volta nel sito Web e la seconda volta nel bot, quindi il termine SSO.

Il diagramma seguente illustra il flusso SSO quando si usa un client chat Web.

Sequence diagram for sign-on flow for Web Chat.

In caso di errore, SSO esegue il fallback al comportamento esistente della scheda OAuth . L'errore può verificarsi quando è necessario il consenso dell'utente o quando lo scambio di token ha esito negativo.

Analizziamo il flusso.

  1. L'utente accede al sito Web.

  2. Un'attività di trigger OAuth viene ricevuta dal chat Web.

  3. Il chat Web avvia una conversazione con il bot tramite un'attività di trigger OAuth.

  4. Il bot invia una scheda OAuth al chat Web.

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

  6. Se la proprietà esiste, il chat Web deve ottenere un token scambiabile per l'utente, che deve essere un token ID Microsoft Entra.

  7. Il chat Web invia un'attività Invoke al bot con il corpo illustrato di seguito.

    {
        "type": "Invoke",
        "name": "signin/tokenExchange",
        "value": {
            "id": "<any unique ID>",
            "connectionName": "<connection name on the bot (from the OAuth Card)>",
            "token": "<exchangeable token>"
        }
    }
    
  8. Il bot elabora TokenExchangeInvokeRequest inviando una richiesta al servizio Bot di intelligenza artificiale di Azure per ottenere un token scambiabile.

  9. L'servizio Bot di intelligenza artificiale di Azure invia il token al bot.

  10. Il bot restituisce un TokenExchangeInvokeResponse valore al chat Web. Il chat Web attende fino a quando non riceve l'oggetto TokenExchangeInvokeResponse.

    {
        "status": "<response code>",
        "body": {
            "id":"<unique ID>",
            "connectionName": "<connection Name on the bot (from the OAuth Card)>",
            "failureDetail": "<failure reason if status code isn't 200, null otherwise>"
        }
    }
    
  11. Se ha TokenExchangeInvokeResponse un status di 200, il chat Web non mostra la scheda OAuth. Per qualsiasi altro status oggetto o se TokenExchangeInvokeResponse non viene ricevuto, il chat Web mostra la scheda OAuth all'utente. In questo modo, il flusso SSO eseguirà il fallback al flusso OAuthCard normale nel caso in cui si verifichino errori o non vengano soddisfatte dipendenze quali il consenso dell'utente.

Per un esempio di implementazione, vedere questo esempio di accesso SSO.