Sdílet prostřednictvím


Informace o jednotném přihlašování

PLATÍ PRO: SDK v4

Jednotné přihlašování (SSO) umožňuje sdílet přístup k prostředkům napříč nezávislými aplikacemi. Uživatel se například může přihlásit ke službě v kořenovém robotovi a kořenový robot může přístupový token sdílet s robotem dovednosti. V současné době se podporuje pouze zprostředkovatel identity Microsoft Entra ID .

Jednotné přihlašování platí pro následující scénáře:

  • Kořenový robot a jeden nebo více robotů dovedností. Uživatel se přihlásí z kořenového robota. Robot pak jménem uživatele vyvolá více dovedností.
  • Ovládací prvek Webový chat vložený na web. Uživatel se přihlásí z webu. Web pak vyvolá robota nebo dovednost jménem uživatele.

Jednotné přihlašování poskytuje následující výhody:

  • Uživatel se nemusí několikrát přihlašovat.
  • Kořenový robot nebo web nemusí znát oprávnění uživatele.

Poznámka:

Jednotné přihlašování je k dispozici v sadě Bot Framework SDK verze 4.8 a novější.

Interakce komponent jednotného přihlašování

Následující diagramy časových sekvencí znázorňují interakce mezi různými komponentami jednotného přihlašování.

  • Následující diagram znázorňuje tok kořenového robota.

    SSO sequence diagram for a root bot.

  • Následující diagram znázorňuje tok a náhradní tok pro ovládací prvek Webový chat.

    SSO sequence diagram for a Web Chat control.

    Pokud se výměna tokenů nezdaří, je náhradním příkazem vyzvat uživatele, aby se přihlásil. K takovým selháním může dojít v případě, že jsou vyžadována další oprávnění nebo je token pro nesprávnou službu.

Pojďme tok analyzovat.

  1. Klient zahájí konverzaci s robotem, který aktivuje scénář OAuth.

  2. Robot odešle klientovi zpět kartu OAuth.

  3. Klient zachytí kartu OAuth před zobrazením uživateli a zkontroluje, jestli obsahuje TokenExchangeResource vlastnost.

  4. Pokud vlastnost existuje, klient odešle TokenExchangeInvokeRequest robotovi zprávu. Klient musí mít vyměnitelný token pro uživatele, což musí být token ID Microsoft Entra a jehož cílová skupina musí být stejná jako TokenExchangeResource.Uri vlastnost. Klient odešle do robota aktivitu Invoke s textem uvedeným níže.

    {
        "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. Robot zpracuje TokenExchangeInvokeRequest a vrátí TokenExchangeInvokeResponse zpět klientovi. Klient by měl počkat, dokud neobdrží 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. TokenExchangeInvokeResponse Pokud má status hodnotu 200, klient nezobrazuje kartu OAuth. Podívejte se na diagram normálního toku . U jakéhokoli jiného statusTokenExchangeInvokeResponse nebo v případě, že není přijat, klient uživateli zobrazí kartu OAuth. Podívejte se na diagram náhradního toku . To zajistí, že se tok jednotného přihlašování vrátí do normálního toku OAuthCard, pokud dojde k nějakým chybám nebo nemetým závislostem, jako je souhlas uživatele.

Další kroky