Om enkel inloggning
GÄLLER FÖR: SDK v4
Med enkel inloggning (SSO) kan åtkomst till resurser delas mellan oberoende program. En användare kan till exempel logga in på en tjänst i en rotrobot och rotroboten kan dela åtkomsttoken med en kunskapsrobot. För närvarande stöds endast Microsoft Entra ID-identitetsprovidern .
Enkel inloggning gäller för följande scenarier:
- En rotrobot och en eller flera kunskapsrobotar. Användaren loggar in från rotroboten. Roboten anropar sedan flera kunskaper för användarens räkning.
- En webbchattkontroll som är inbäddad på en webbplats. Användaren loggar in från webbplatsen. Webbplatsen anropar sedan en robot eller en färdighet för användarens räkning.
Enkel inloggning ger följande fördelar:
- Användaren behöver inte logga in flera gånger.
- Rotroboten eller webbplatsen behöver inte känna till användarens behörigheter.
Kommentar
Enkel inloggning är tillgängligt i Bot Framework SDK version 4.8 och senare.
Interaktion med SSO-komponenter
Följande tidssekvensdiagram visar interaktionerna mellan de olika komponenterna för enkel inloggning.
Följande diagram illustrerar flödet för en rotrobot.
Följande diagram illustrerar flödet och reservflödet för en webchattkontroll.
Om tokenutbytet misslyckas är återställningen att uppmana användaren att logga in. Sådana fel kan inträffa när extra behörigheter krävs eller token är för fel tjänst.
Nu ska vi analysera flödet.
Klienten startar en konversation med roboten som utlöser ett OAuth-scenario.
Roboten skickar tillbaka ett OAuth-kort till klienten.
Klienten fångar upp OAuth-kortet innan det visas för användaren och kontrollerar om det innehåller en
TokenExchangeResource
egenskap.Om egenskapen finns skickar klienten en
TokenExchangeInvokeRequest
till roboten. Klienten måste ha en utbytbar token för användaren, som måste vara en Microsoft Entra-ID-token och vars målgrupp måste vara samma somTokenExchangeResource.Uri
egenskapen. Klienten skickar en Invoke-aktivitet till roboten med den brödtext som visas nedan.{ "type": "Invoke", "name": "signin/tokenExchange", "value": { "id": "<any unique ID>", "connectionName": "<connection Name on the skill bot (from the OAuth Card)>", "token": "<exchangeable token>" } }
Roboten
TokenExchangeInvokeRequest
bearbetar och returnerar enTokenExchangeInvokeResponse
tillbaka till klienten. Klienten bör vänta tillsTokenExchangeInvokeResponse
den tar emot .{ "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>" } }
TokenExchangeInvokeResponse
Om har ettstatus
av200
visar klienten inte OAuth-kortet. Se det normala flödesdiagrammet. För andrastatus
eller om inteTokenExchangeInvokeResponse
tas emot visar klienten OAuth-kortet för användaren. Se reservflödesdiagrammet. Detta säkerställer att SSO-flödet återgår till det normala OAuthCard-flödet, om det finns några fel eller ouppfyllda beroenden, till exempel användarmedgivande.