Delen via


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.

    SSO-sequentiediagram voor een hoofdbot.

  • In het volgende diagram ziet u de stroom en de terugvalstroom voor een Webchat besturingselement.

    SSO-sequentiediagram 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.

  1. De client start een gesprek met de bot die een OAuth-scenario activeert.

  2. De bot stuurt een OAuth-kaart terug naar de client.

  3. De client onderschept de OAuth-kaart voordat deze aan de gebruiker wordt weergegeven en controleert of deze een TokenExchangeResource eigenschap bevat.

  4. 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 als TokenExchangeResource.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>"
        }
    }
    
  5. De bot verwerkt de TokenExchangeInvokeRequest en retourneert een TokenExchangeInvokeResponse terug naar de client. De client moet wachten totdat de TokenExchangeInvokeResponse.

    {
        "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>"
        }
    }
    
  6. Als de TokenExchangeInvokeResponse client een status van 200heeft, wordt de OAuth-kaart niet weergegeven. Zie het normale stroomdiagram . Voor andere status of als de TokenExchangeInvokeResponse 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.

Volgende stappen