Logowanie jednokrotne z czat internetowy
DOTYCZY: ZESTAW SDK w wersji 4
Logowanie jednokrotne (SSO) umożliwia klientowi, takie jak kontrola czat internetowy, komunikowanie się z botem w imieniu użytkownika. Obecnie obsługiwany jest tylko dostawca tożsamości Entra ID firmy Microsoft.
Zazwyczaj czat internetowy jest osadzany na stronie witryny internetowej. Gdy użytkownik zaloguje się do witryny internetowej, czat internetowy wywołuje bota w imieniu użytkownika. Token klienta witryny internetowej, na podstawie poświadczeń użytkownika, jest wymieniany dla innego, aby uzyskać dostęp do bota. W ten sposób użytkownik nie musi się zalogować dwukrotnie; po raz pierwszy w witrynie internetowej i po raz drugi w botze, stąd termin SSO.
Na poniższym diagramie przedstawiono przepływ logowania jednokrotnego podczas korzystania z klienta czat internetowy.
Po niepowodzeniu logowanie jednokrotne powraca do istniejącego zachowania pokazującego kartę OAuth . Błąd może wystąpić, gdy wymagana jest zgoda użytkownika lub gdy wymiana tokenów zakończy się niepowodzeniem.
Przeanalizujmy przepływ.
Użytkownik loguje się do witryny internetowej.
Działanie wyzwalacza OAuth jest odbierane przez czat internetowy.
Czat internetowy rozpoczyna konwersację z botem za pośrednictwem działania wyzwalacza OAuth.
Bot wysyła z powrotem kartę OAuth do czat internetowy.
Czat internetowy przechwytuje kartę OAuth przed wyświetleniem jej użytkownikowi i sprawdza, czy zawiera
TokenExchangeResource
właściwość.Jeśli właściwość istnieje, czat internetowy musi uzyskać wymienialny token dla użytkownika, który musi być tokenem identyfikatora entra firmy Microsoft.
Czat internetowy wysyła działanie Invoke do bota z treścią pokazaną poniżej.
{ "type": "Invoke", "name": "signin/tokenExchange", "value": { "id": "<any unique ID>", "connectionName": "<connection name on the bot (from the OAuth Card)>", "token": "<exchangeable token>" } }
Bot przetwarza
TokenExchangeInvokeRequest
ten proces, wysyłając żądanie do usługi Azure AI Bot Service w celu uzyskania tokenu możliwego do wymiany.Usługa Azure AI Bot Service wysyła token do bota.
Bot zwraca element
TokenExchangeInvokeResponse
z powrotem do czat internetowy. Czat internetowy czeka, aż otrzyma elementTokenExchangeInvokeResponse
.{ "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>" } }
Jeśli element
TokenExchangeInvokeResponse
mastatus
wartość200
, czat internetowy nie wyświetla karty OAuth. W przypadku innychstatus
lub, jeśliTokenExchangeInvokeResponse
element nie został odebrany, czat internetowy wyświetla użytkownikowi kartę OAuth. Dzięki temu przepływ logowania jednokrotnego wraca do normalnego przepływu OAuthCard, w przypadku błędów lub niezaspokojonych zależności, takich jak zgoda użytkownika.
Przykład implementacji można znaleźć w tym przykładzie logowania jednokrotnego.