Dela via


Enkel inloggning med en webbchatt

GÄLLER FÖR: SDK v4

Med enkel inloggning (SSO) kan en klient, till exempel en webbchattkontroll, 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 webbchatten 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 webbchattklient.

Sekvensdiagram för inloggningsflöde för webbchatt.

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 webbchatten.

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

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

  5. Webbchatten 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 webbchatten hämta en exchangeable-token för användaren, som måste vara en Microsoft Entra-ID-token.

  7. Webbchatten skickar en invoke-aktivitet till roboten med texten 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 webbchatten. Webbchatten väntar tills den TokenExchangeInvokeResponsetar 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 webbchatten inte OAuth-kortet. För andra status eller om inte TokenExchangeInvokeResponse tas emot visar webbchatten 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.