Udostępnij za pośrednictwem


Informacje o logowaniu jednokrotnym

DOTYCZY: ZESTAW SDK w wersji 4

Logowanie jednokrotne (SSO) umożliwia udostępnianie zasobów w niezależnych aplikacjach. Na przykład użytkownik może zalogować się do usługi w botze głównym, a bot główny może udostępnić token dostępu botowi umiejętności. Obecnie obsługiwany jest tylko dostawca tożsamości Entra ID firmy Microsoft.

Logowanie jednokrotne ma zastosowanie do następujących scenariuszy:

  • Bot główny i co najmniej jeden bot umiejętności. Użytkownik loguje się z bota głównego. Następnie bot wywołuje wiele umiejętności w imieniu użytkownika.
  • Kontrolka czat internetowy osadzona w witrynie internetowej. Użytkownik loguje się z witryny internetowej. Następnie witryna internetowa wywołuje bota lub umiejętności w imieniu użytkownika.

Logowanie jednokrotne zapewnia następujące korzyści:

  • Użytkownik nie musi się logować wiele razy.
  • Główny bot lub witryna internetowa nie musi znać uprawnień użytkownika.

Uwaga

Logowanie jednokrotne jest dostępne w zestawie Bot Framework SDK w wersji 4.8 lub nowszej.

Interakcja składników logowania jednokrotnego

Poniższe diagramy sekwencji czasu pokazują interakcje między logowaniem jednokrotnym różnych składników.

  • Na poniższym diagramie przedstawiono przepływ bota głównego.

    SSO sequence diagram for a root bot.

  • Na poniższym diagramie przedstawiono przepływ i rezerwowy przepływ dla kontrolki czat internetowy.

    SSO sequence diagram for a Web Chat control.

    Jeśli wymiana tokenów zakończy się niepowodzeniem, powrót to monit użytkownika o zalogowanie się. Takie błędy mogą wystąpić, gdy wymagane są dodatkowe uprawnienia lub token dotyczy niewłaściwej usługi.

Przeanalizujmy przepływ.

  1. Klient rozpoczyna konwersację z botem wyzwalającym scenariusz OAuth.

  2. Bot wysyła z powrotem kartę OAuth do klienta.

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

  4. Jeśli właściwość istnieje, klient wysyła element TokenExchangeInvokeRequest do bota. Klient musi mieć token wymiany dla użytkownika, który musi być tokenem identyfikatora Entra firmy Microsoft i którego odbiorcy muszą być takie same jak TokenExchangeResource.Uri właściwość. Klient 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 skill bot (from the OAuth Card)>",
            "token": "<exchangeable token>"
        }
    }
    
  5. Bot przetwarza element TokenExchangeInvokeRequest i zwraca element TokenExchangeInvokeResponse z powrotem do klienta. Klient powinien poczekać, aż otrzyma element 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. Jeśli element TokenExchangeInvokeResponse ma status wartość 200, klient nie wyświetla karty OAuth. Zobacz diagram normalnego przepływu . W przypadku innych status lub, jeśli TokenExchangeInvokeResponse element nie został odebrany, klient wyświetli użytkownikowi kartę OAuth. Zobacz diagram przepływu rezerwowego. Dzięki temu przepływ logowania jednokrotnego wraca do normalnego przepływu OAuthCard, jeśli wystąpią błędy lub niezaspokojonych zależności, takich jak zgoda użytkownika.

Następne kroki