Udostępnij za pośrednictwem


Uwierzytelnianie użytkownika

DOTYCZY: SDK wersja 4

Czasami bot musi uzyskać dostęp do zabezpieczonych zasobów online w imieniu użytkownika, takich jak sprawdzanie poczty e-mail, sprawdzanie stanu lotu lub składanie zamówienia. Użytkownik musi autoryzować bota, aby to zrobił w jego imieniu, a aby autoryzować bota, użytkownik musi uwierzytelnić swoją tożsamość. Uwierzytelnianie OAuth służy do uwierzytelniania użytkownika i autoryzowania bota. Zobacz też Typy uwierzytelniania.

Jeśli chcesz odświeżyć wiedzę o usłudze OAuth, zobacz następujące kwestie:

Uwierzytelnianie użytkownika w konwersacji

Aby wykonać określone operacje w imieniu użytkownika, takie jak sprawdzanie poczty e-mail, odwoływanie się do kalendarza, sprawdzanie stanu lotu lub składanie zamówienia, bot musi wywołać usługę zewnętrzną, taką jak Microsoft Graph, GitHub lub usługa REST firmy. Każda usługa zewnętrzna ma sposób zabezpieczania tych wywołań. Typowym sposobem wystawiania tych żądań jest użycie tokenu użytkownika , który jednoznacznie identyfikuje użytkownika w tej usłudze zewnętrznej (czasami nazywany tokenem sieci Web JSON (JWT).

Aby zabezpieczyć wywołanie usługi zewnętrznej, bot musi poprosić użytkownika o zalogowanie się, aby mógł uzyskać token użytkownika dla tej usługi. Wiele usług obsługuje pobieranie tokenu za pośrednictwem protokołu OAuth lub OAuth2 .

Usługa Azure AI Bot Service udostępnia wyspecjalizowane karty logowania i usługi, które współpracują z protokołem OAuth i zarządzają cyklem życia tokenu. Bot może używać tych funkcji do uzyskiwania tokenu użytkownika.

  • W ramach konfiguracji bota połączenie OAuth jest rejestrowane w ramach zasobu usługi Azure AI Bot Service na platformie Azure.

    Połączenie zawiera informacje o dostawcy tożsamości do użycia wraz z prawidłowym identyfikatorem klienta OAuth i tajnym kluczem, zakresami OAuth, które mają być włączone, oraz wszelkimi innymi metadanymi połączenia wymaganymi przez tego dostawcę tożsamości.

  • W kodzie bota połączenie OAuth służy do logowania użytkownika i uzyskiwania tokenu użytkownika.

Na poniższej ilustracji przedstawiono elementy związane z procesem uwierzytelniania.

Diagram ilustrujący relację między składnikami uwierzytelniania w usłudze Azure AI Bot Service.

Informacje o usłudze tokenów platformy Bot Framework

Usługa tokenu platformy Bot Framework odpowiada za:

  • Ułatwianie korzystania z protokołu OAuth z szeroką gamą usług zewnętrznych.
  • Bezpieczne przechowywanie tokenów dla określonego bota, kanału, konwersacji i użytkownika.
  • Uzyskiwanie tokenów użytkownika.

    Wskazówka

    Jeśli bot ma wygasły token użytkownika, bot powinien:

    • Wyloguj użytkownika
    • Ponownie zainicjuj przepływ logowania

Na przykład bot, który może sprawdzać ostatnie wiadomości e-mail użytkownika przy użyciu interfejsu API programu Microsoft Graph, wymaga tokenu użytkownika od dostawcy tożsamości, w tym przypadku identyfikatora Entra firmy Microsoft. W czasie projektowania deweloper bota wykonuje następujące dwa ważne kroki:

  1. Rejestruje aplikację Microsoft Entra ID, dostawcę tożsamości, za pomocą usługi tokenu Bot Framework za pośrednictwem portalu Azure.
  2. Konfiguruje połączenie OAuth (nazwane na przykład GraphConnection) dla bota.

Na poniższej ilustracji przedstawiono sekwencję czasową interakcji użytkownika z botem po wysłaniu żądania e-mail przy użyciu usługi Microsoft Graph.

Diagram sekwencji przedstawiający kroki wysyłania wiadomości e-mail w imieniu użytkownika przez bota.

  1. Użytkownik wysyła do bota żądanie e-mail.

  2. Działanie z tym komunikatem jest wysyłane przez użytkownika do usługi kanału Bot Framework. Usługa kanału zapewnia, że pole userid w kontekście działania bota zostało poprawnie ustawione, a komunikat został wysłany do bota.

    Uwaga / Notatka

    Identyfikatory użytkownika są specyficzne dla kanału, takie jak identyfikator użytkownika w serwisie Facebook lub jego numer telefonu SMS.

  3. Bot wysyła żądanie do usługi tokenu platformy Bot Framework z pytaniem, czy ma już token dla identyfikatora użytkownika w połączeniu OAuth GraphConnection.

  4. Ponieważ jest to pierwszy raz, gdy ten użytkownik wchodził w interakcję z botem, usługa tokenu platformy Bot Framework nie ma jeszcze tokenu dla tego użytkownika i zwraca wynik NotFound do bota.

    Uwaga / Notatka

    Jeśli token zostanie znaleziony, kroki uwierzytelniania zostaną pominięte, a bot może wysłać żądanie e-mail przy użyciu przechowywanego tokenu.

  5. Bot tworzy kartę OAuthCard z nazwą GraphConnection połączenia i odpowiada użytkownikowi z prośbą o zalogowanie się przy użyciu tej karty.

  6. Działanie przechodzi przez usługę Bot Framework Channel Service, która wywołuje usługę tokenu Bot Framework w celu utworzenia prawidłowego adresu URL logowania OAuth dla tego żądania. Ten adres URL logowania jest dodawany do karty OAuthCard, a karta zostanie zwrócona użytkownikowi.

  7. Użytkownik jest wyświetlany z komunikatem umożliwiającym zalogowanie się, klikając przycisk logowania OAuthCard.

  8. Gdy użytkownik kliknie przycisk logowania, usługa kanału otwiera przeglądarkę internetową i wywołuje usługę zewnętrzną w celu załadowania strony logowania.

  9. Użytkownik loguje się do tej strony dla usługi zewnętrznej. Następnie usługa zewnętrzna kończy wymianę protokołu OAuth z usługą Tokenów Bot Framework, co skutkuje wysłaniem tokenu użytkownika do usługi Tokenów Bot Framework. Usługa tokenu Bot Framework bezpiecznie przechowuje ten token i przy użyciu tego tokenu wysyła czynność do bota.

  10. Bot odbiera działanie z tokenem i może używać go do wykonywania wywołań względem interfejsu API programu MS Graph.

Zabezpieczanie adresu URL logowania

Ważnym zagadnieniem, gdy platforma Bot Framework ułatwia logowanie użytkownika, jest sposób zabezpieczania adresu URL logowania. Gdy użytkownik otrzyma adres URL logowania, ten adres URL jest skojarzony z konkretnym identyfikatorem konwersacji i identyfikatorem użytkownika dla tego bota. Nie udostępniaj tego adresu URL — spowoduje to wystąpienie nieprawidłowego logowania dla określonej konwersacji bota. Aby wyeliminować ataki zabezpieczeń korzystające z adresu URL logowania współdzielonego, upewnij się, że maszyna i osoba, która kliknie adres URL logowania, jest osobą będącą właścicielem okna konwersacji.

Niektóre kanały, takie jak Microsoft Teams, Direct Line i WebChat, mogą to zrobić bez zauważenia przez użytkownika. Na przykład WebChat używa plików cookie sesji, aby upewnić się, że proces logowania odbywał się w tej samej przeglądarce co konwersacja WebChat. Jednak w przypadku innych kanałów użytkownik jest często prezentowany z 6-cyfrowym kodem magicznym. Jest to podobne do wbudowanego uwierzytelniania wieloskładnikowego, ponieważ usługa Bot Framework Token Service nie zwalnia tokenu do bota, chyba że użytkownik zakończy końcowe uwierzytelnianie, udowadniając, że osoba, która się zalogowała, ma dostęp do środowiska czatu, wprowadzając 6-cyfrowy kod.

Dalsze kroki

Teraz, gdy znasz już uwierzytelnianie użytkowników, przyjrzyjmy się temu, jak zastosować je do bota.

Zobacz także