Delen via


Eenmalige aanmelding met een Webchat

VAN TOEPASSING OP: SDK v4

Met eenmalige aanmelding (SSO) kan een client, zoals een Webchat besturingselement, namens de gebruiker communiceren met een bot. Op dit moment wordt alleen de Id-provider van Microsoft Entra ID ondersteund.

Normaal gesproken wordt een Webchat ingesloten op een websitepagina. Wanneer de gebruiker zich aanmeldt bij de website, roept de Webchat namens de gebruiker een bot aan. Het token van de websiteclient, op basis van de referenties van de gebruiker, wordt uitgewisseld voor een ander token voor toegang tot de bot. Op deze manier hoeft de gebruiker zich niet tweemaal aan te melden; de eerste keer op de website en de tweede keer op de bot, vandaar de term SSO.

In het volgende diagram ziet u de SSO-stroom wanneer u een Webchat-client gebruikt.

Sequence diagram for sign-on flow for Web Chat.

Bij een fout valt eenmalige aanmelding terug op het bestaande gedrag van het weergeven van de OAuth-kaart . Er kan een fout optreden wanneer gebruikerstoestemming is vereist of wanneer de tokenuitwisseling mislukt.

Laten we de stroom analyseren.

  1. De gebruiker meldt zich aan bij de website.

  2. Een OAuth-triggeractiviteit wordt ontvangen door de Webchat.

  3. De Webchat start een gesprek met de bot via een OAuth-triggeractiviteit.

  4. De bot stuurt een OAuth-kaart terug naar de Webchat.

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

  6. Als de eigenschap bestaat, moet de Webchat een uitwisselbaar token voor de gebruiker ophalen. Dit moet een Microsoft Entra ID-token zijn.

  7. De Webchat 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 bot (from the OAuth Card)>",
            "token": "<exchangeable token>"
        }
    }
    
  8. De bot verwerkt de TokenExchangeInvokeRequest door een aanvraag naar de Azure AI Bot Service te verzenden om een uitwisselbaar token te verkrijgen.

  9. De Azure AI Bot Service verzendt het token naar de bot.

  10. De bot keert terug TokenExchangeInvokeResponse naar de Webchat. De Webchat wacht totdat het wordt ontvangenTokenExchangeInvokeResponse.

    {
        "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>"
        }
    }
    
  11. Als het TokenExchangeInvokeResponse een status van 200heeft, wordt in de Webchat de OAuth-kaart niet weergegeven. Voor andere status of als het TokenExchangeInvokeResponse niet is ontvangen, wordt in de Webchat de OAuth-kaart aan de gebruiker weergegeven. Dit zorgt ervoor dat de SSO-stroom terugvalt op de normale OAuthCard-stroom, in geval van fouten of niet-met-afhankelijkheden, zoals toestemming van de gebruiker.

Raadpleeg dit voorbeeld van eenmalige aanmelding voor een implementatievoorbeeld.