Dela via


Om enkel inloggning

GÄLLER FÖR: SDK v4

Med enkel inloggning (SSO) kan åtkomst till resurser delas mellan oberoende program. En användare kan till exempel logga in på en tjänst i en rotrobot och rotroboten kan dela åtkomsttoken med en kunskapsrobot. För närvarande stöds endast Microsoft Entra ID-identitetsprovidern .

Enkel inloggning gäller för följande scenarier:

  • En rotrobot och en eller flera kunskapsrobotar. Användaren loggar in från rotroboten. Roboten anropar sedan flera kunskaper för användarens räkning.
  • En webbchattkontroll som är inbäddad på en webbplats. Användaren loggar in från webbplatsen. Webbplatsen anropar sedan en robot eller en färdighet för användarens räkning.

Enkel inloggning ger följande fördelar:

  • Användaren behöver inte logga in flera gånger.
  • Rotroboten eller webbplatsen behöver inte känna till användarens behörigheter.

Kommentar

Enkel inloggning är tillgängligt i Bot Framework SDK version 4.8 och senare.

Interaktion med SSO-komponenter

Följande tidssekvensdiagram visar interaktionerna mellan de olika komponenterna för enkel inloggning.

  • Följande diagram illustrerar flödet för en rotrobot.

    SSO-sekvensdiagram för en rotrobot.

  • Följande diagram illustrerar flödet och reservflödet för en webchattkontroll.

    SSO-sekvensdiagram för en webbchattkontroll.

    Om tokenutbytet misslyckas är återställningen att uppmana användaren att logga in. Sådana fel kan inträffa när extra behörigheter krävs eller token är för fel tjänst.

Nu ska vi analysera flödet.

  1. Klienten startar en konversation med roboten som utlöser ett OAuth-scenario.

  2. Roboten skickar tillbaka ett OAuth-kort till klienten.

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

  4. Om egenskapen finns skickar klienten en TokenExchangeInvokeRequest till roboten. Klienten måste ha en utbytbar token för användaren, som måste vara en Microsoft Entra-ID-token och vars målgrupp måste vara samma som TokenExchangeResource.Uri egenskapen. Klienten skickar en Invoke-aktivitet till roboten med den brödtext som visas nedan.

    {
        "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. Roboten TokenExchangeInvokeRequest bearbetar och returnerar en TokenExchangeInvokeResponse tillbaka till klienten. Klienten bör vänta tills TokenExchangeInvokeResponseden tar emot .

    {
        "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. TokenExchangeInvokeResponse Om har ett status av 200visar klienten inte OAuth-kortet. Se det normala flödesdiagrammet. För andra status eller om inte TokenExchangeInvokeResponse tas emot visar klienten OAuth-kortet för användaren. Se reservflödesdiagrammet. Detta säkerställer att SSO-flödet återgår till det normala OAuthCard-flödet, om det finns några fel eller ouppfyllda beroenden, till exempel användarmedgivande.

Nästa steg