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.

Sequence diagram for sign-on flow for Web Chat.

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.

  1. Användaren loggar in på webbplatsen.

  2. En OAuth-utlösaraktivitet tas emot av Webbchatt.

  3. Webbchatt startar en konversation med roboten via en OAuth-utlösaraktivitet.

  4. Roboten skickar tillbaka ett OAuth-kort till Webbchatt.

  5. Webbchatt fångar upp OAuth-kortet innan det visas för användaren och kontrollerar om det innehåller en TokenExchangeResource egenskap.

  6. Om egenskapen finns måste Webbchatt hämta en utbytbar token för användaren, som måste vara en Microsoft Entra-ID-token.

  7. 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>"
        }
    }
    
  8. Roboten TokenExchangeInvokeRequest bearbetar genom att skicka en begäran till Azure AI Bot Service för att hämta en utbytbar token.

  9. Azure AI Bot Service skickar token till roboten.

  10. Roboten returnerar en TokenExchangeInvokeResponse tillbaka till Webbchatt. Webbchatt väntar tills TokenExchangeInvokeResponseden 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>"
        }
    }
    
  11. TokenExchangeInvokeResponse Om har ett status av 200visar Webbchatt inte OAuth-kortet. För andra status eller om inte TokenExchangeInvokeResponse 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.