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.
Il diagramma seguente illustra il flusso e il flusso di fallback 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.
Il client avvia una conversazione con il bot che attiva uno scenario OAuth.
Il bot restituisce una scheda OAuth al client.
Il client intercetta la scheda OAuth prima di visualizzarla all'utente e controlla se contiene una proprietà
TokenExchangeResource
.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 ugualeTokenExchangeResource.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>" } }
Il bot elabora la richiesta
TokenExchangeInvokeRequest
e restituisce una rispostaTokenExchangeInvokeResponse
al client. Il client deve attendere fino a quando non riceve l'oggettoTokenExchangeInvokeResponse
.{ "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>" } }
Se ha
TokenExchangeInvokeResponse
unstatus
di200
, il client non visualizza la scheda OAuth. Vedere il diagramma relativo al flusso normale. Per qualsiasi altrostatus
o seTokenExchangeInvokeResponse
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.