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.
Následující diagram znázorňuje tok a náhradní tok pro ovládací prvek Webový chat.
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.
Klient zahájí konverzaci s robotem, který aktivuje scénář OAuth.
Robot odešle klientovi zpět kartu OAuth.
Klient zachytí kartu OAuth před zobrazením uživateli a zkontroluje, jestli obsahuje
TokenExchangeResource
vlastnost.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á jakoTokenExchangeResource.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>" } }
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>" } }
TokenExchangeInvokeResponse
Pokud mástatus
hodnotu200
, klient nezobrazuje kartu OAuth. Podívejte se na diagram normálního toku . U jakéhokoli jinéhostatus
TokenExchangeInvokeResponse
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.