Udostępnij za pośrednictwem


Uwierzytelnianie użytkownika

DOTYCZY: ZESTAW SDK w wersji 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 wpisem tajnym, zakresami protokołu OAuth do włączenia 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 illustrating the relationship between authentication components in 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.

    Napiwek

    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 przy użyciu usługi tokenu Bot Framework za pośrednictwem witryny Azure Portal.
  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.

Sequence diagram outlining the steps for a bot to send an email on behalf of a user.

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

  2. Działanie z tym komunikatem jest wysyłane od użytkownika do usługi kanału Bot Framework. Usługa kanału gwarantuje, że userid pole w działaniu zostało ustawione, a komunikat jest wysyłany do bota.

    Uwaga

    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 identyfikatora UserId dla połączenia GraphConnectionOAuth.

  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

    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ą tokenu Bot Framework, co powoduje wysłanie przez usługę tokenu bot Framework token service tokenu użytkownika. Usługa tokenu Bot Framework bezpiecznie przechowuje ten token i wysyła działanie do bota przy użyciu tego tokenu.

  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 zostanie wyświetlony przy użyciu adresu URL logowania, ten adres URL jest skojarzony z określonym 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 przepływ 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.

Ważne

Pamiętaj, że te ważne zagadnienia dotyczące zabezpieczeń. Dodatkowe informacje można znaleźć w tym wpisie w blogu: Using WebChat with Azure AI Bot Service Authentication (Korzystanie z protokołu WebChat z uwierzytelnianiem usługi Azure AI Bot Service).

Następne kroki

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

Zobacz też