Udostępnij za pośrednictwem


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.

Sequence diagram for sign-on flow for Web Chat.

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.

  1. Użytkownik loguje się do witryny internetowej.

  2. Działanie wyzwalacza OAuth jest odbierane przez czat internetowy.

  3. Czat internetowy rozpoczyna konwersację z botem za pośrednictwem działania wyzwalacza OAuth.

  4. Bot wysyła z powrotem kartę OAuth do czat internetowy.

  5. Czat internetowy przechwytuje kartę OAuth przed wyświetleniem jej użytkownikowi i sprawdza, czy zawiera TokenExchangeResource właściwość.

  6. Jeśli właściwość istnieje, czat internetowy musi uzyskać wymienialny token dla użytkownika, który musi być tokenem identyfikatora entra firmy Microsoft.

  7. 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>"
        }
    }
    
  8. Bot przetwarza TokenExchangeInvokeRequest ten proces, wysyłając żądanie do usługi Azure AI Bot Service w celu uzyskania tokenu możliwego do wymiany.

  9. Usługa Azure AI Bot Service wysyła token do bota.

  10. Bot zwraca element TokenExchangeInvokeResponse z powrotem do czat internetowy. Czat internetowy czeka, aż otrzyma element TokenExchangeInvokeResponse.

    {
        "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. Jeśli element TokenExchangeInvokeResponse ma status wartość 200, czat internetowy nie wyświetla karty OAuth. W przypadku innych status lub, jeśli TokenExchangeInvokeResponse 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.