Enkel inloggning med en Webbchatt
GÄLLER FÖR: SDK v4
Med enkel inloggning (SSO) kan en klient, till exempel en Webbchatt kontroll, kommunicera med en robot för användarens räkning. För närvarande stöds endast Microsoft Entra ID-identitetsprovidern .
Vanligtvis bäddas en Webbchatt in på en webbplatssida. När användaren loggar in på webbplatsen anropar Webbchatt en robot för användarens räkning. Webbplatsklientens token, baserat på användarens autentiseringsuppgifter, byts ut mot en annan för att få åtkomst till roboten. På så sätt behöver användaren inte logga in två gånger. första gången på webbplatsen och andra gången på roboten, därav termen enkel inloggning.
Följande diagram visar SSO-flödet när du använder en Webbchatt-klient.
Vid fel återgår enkel inloggning till det befintliga beteendet att visa OAuth-kortet . Fel kan inträffa när användarens medgivande krävs eller när tokenutbytet misslyckas.
Nu ska vi analysera flödet.
Användaren loggar in på webbplatsen.
En OAuth-utlösaraktivitet tas emot av Webbchatt.
Webbchatt startar en konversation med roboten via en OAuth-utlösaraktivitet.
Roboten skickar tillbaka ett OAuth-kort till Webbchatt.
Webbchatt fångar upp OAuth-kortet innan det visas för användaren och kontrollerar om det innehåller en
TokenExchangeResource
egenskap.Om egenskapen finns måste Webbchatt hämta en utbytbar token för användaren, som måste vara en Microsoft Entra-ID-token.
Webbchatt skickar en Invoke-aktivitet till roboten med brödtexten nedan.
{ "type": "Invoke", "name": "signin/tokenExchange", "value": { "id": "<any unique ID>", "connectionName": "<connection name on the bot (from the OAuth Card)>", "token": "<exchangeable token>" } }
Roboten
TokenExchangeInvokeRequest
bearbetar genom att skicka en begäran till Azure AI Bot Service för att hämta en utbytbar token.Azure AI Bot Service skickar token till roboten.
Roboten returnerar en
TokenExchangeInvokeResponse
tillbaka till Webbchatt. Webbchatt väntar tillsTokenExchangeInvokeResponse
den tar emot .{ "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>" } }
TokenExchangeInvokeResponse
Om har ettstatus
av200
visar Webbchatt inte OAuth-kortet. För andrastatus
eller om inteTokenExchangeInvokeResponse
tas emot visar Webbchatt OAuth-kortet för användaren. Detta säkerställer att SSO-flödet återgår till det normala OAuthCard-flödet om det uppstår fel eller ouppfyllda beroenden som användarens medgivande.
Ett implementeringsexempel finns i det här SSO-exemplet.