Eenmalige aanmelding
VAN TOEPASSING OP: SDK v4
Met eenmalige aanmelding (SSO) kunnen resources worden gedeeld in onafhankelijke toepassingen. Een gebruiker kan zich bijvoorbeeld aanmelden bij een service in een hoofdbot en de hoofdbot kan het toegangstoken delen met een vaardigheidsbot. Op dit moment wordt alleen de Id-provider van Microsoft Entra ID ondersteund.
Eenmalige aanmelding is van toepassing op de volgende scenario's:
- Een hoofdbot en een of meer vaardigheidsbots. De gebruiker meldt zich aan bij de hoofdbot. De bot roept vervolgens meerdere vaardigheden aan namens de gebruiker.
- Een Webchat besturingselement dat is ingesloten op een website. De gebruiker meldt zich aan bij de website. De website roept vervolgens een bot of een vaardigheid aan namens de gebruiker.
Eenmalige aanmelding biedt de volgende voordelen:
- De gebruiker hoeft zich niet meerdere keren aan te melden.
- De hoofdbot of website hoeft de machtigingen van de gebruiker niet te kennen.
Notitie
Eenmalige aanmelding is beschikbaar in Bot Framework SDK versie 4.8 en hoger.
Interactie met SSO-onderdelen
De volgende tijdreeksdiagrammen tonen de interacties tussen de verschillende onderdelen van eenmalige aanmelding.
In het volgende diagram ziet u de stroom voor een hoofdbot.
In het volgende diagram ziet u de stroom en de terugvalstroom voor een Webchat besturingselement.
Als de tokenuitwisseling mislukt, wordt de gebruiker gevraagd zich aan te melden. Dergelijke fouten kunnen optreden wanneer extra machtigingen vereist zijn of het token voor de verkeerde service is.
Laten we de stroom analyseren.
De client start een gesprek met de bot die een OAuth-scenario activeert.
De bot stuurt een OAuth-kaart terug naar de client.
De client onderschept de OAuth-kaart voordat deze aan de gebruiker wordt weergegeven en controleert of deze een
TokenExchangeResource
eigenschap bevat.Als de eigenschap bestaat, verzendt de client een
TokenExchangeInvokeRequest
naar de bot. De client moet een uitwisselbaar token hebben voor de gebruiker. Dit moet een Microsoft Entra ID-token zijn en waarvan de doelgroep hetzelfde moet zijn alsTokenExchangeResource.Uri
de eigenschap. De client verzendt een aanroepactiviteit naar de bot met de onderstaande hoofdtekst.{ "type": "Invoke", "name": "signin/tokenExchange", "value": { "id": "<any unique ID>", "connectionName": "<connection Name on the skill bot (from the OAuth Card)>", "token": "<exchangeable token>" } }
De bot verwerkt de
TokenExchangeInvokeRequest
en retourneert eenTokenExchangeInvokeResponse
terug naar de client. De client moet wachten totdat deTokenExchangeInvokeResponse
.{ "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>" } }
Als de
TokenExchangeInvokeResponse
client eenstatus
van200
heeft, wordt de OAuth-kaart niet weergegeven. Zie het normale stroomdiagram . Voor anderestatus
of als deTokenExchangeInvokeResponse
client niet is ontvangen, wordt de OAuth-kaart aan de gebruiker weergegeven. Zie het terugvalstroomdiagram . Dit zorgt ervoor dat de SSO-stroom terugvalt op de normale OAuthCard-stroom, als er fouten of niet-met-afhankelijkheden zijn, zoals toestemming van de gebruiker.