Share via


Gebruikersverificatie

VAN TOEPASSING OP: SDK v4

Soms moet een bot namens de gebruiker toegang krijgen tot beveiligde onlinebronnen, zoals het controleren van e-mail, het controleren van de vluchtstatus of het plaatsen van een bestelling. De gebruiker moet de bot machtigen om dit namens hen te doen en om de bot te autoriseren, moet de gebruiker zijn identiteit verifiëren. OAuth wordt gebruikt om de gebruiker te verifiëren en de bot te autoriseren. Zie ook verificatietypen.

Als u uw OAuth-kennis wilt vernieuwen, raadpleegt u het volgende:

Gebruikersverificatie in een gesprek

Als u bepaalde bewerkingen wilt uitvoeren namens een gebruiker, zoals het controleren van e-mail, het verwijzen naar een agenda, het controleren van de vluchtstatus of het plaatsen van een bestelling, moet de bot een externe service aanroepen, zoals microsoft Graph, GitHub of de REST-service van een bedrijf. Elke externe service heeft een manier om deze aanroepen te beveiligen. Een veelvoorkomende manier om deze aanvragen uit te voeren, is door een gebruikerstoken te gebruiken dat de gebruiker op unieke wijze identificeert in die externe service (ook wel een JSON-webtoken (JWT) genoemd).

Om de aanroep naar een externe service te beveiligen, moet de bot de gebruiker vragen zich aan te melden, zodat het token van de gebruiker voor die service kan verkrijgen. Veel services ondersteunen het ophalen van tokens via het OAuth - of OAuth2-protocol .

De Azure AI Bot Service biedt gespecialiseerde aanmeldingskaarten en -services die werken met het OAuth-protocol en de levenscyclus van het token beheren. Een bot kan deze functies gebruiken om een gebruikerstoken te verkrijgen.

  • Als onderdeel van de botconfiguratie wordt een OAuth-verbinding geregistreerd in de Azure AI Bot Service-resource in Azure.

    De verbinding bevat informatie over de id-provider die moet worden gebruikt, samen met een geldige OAuth-client-id en -geheim, de OAuth-bereiken die moeten worden ingeschakeld en eventuele andere metagegevens van de verbinding die door die id-provider zijn vereist.

  • In de code van de bot wordt de OAuth-verbinding gebruikt om de gebruiker aan te melden en het gebruikerstoken op te halen.

In de volgende afbeelding ziet u de elementen die betrokken zijn bij het verificatieproces.

Diagram illustrating the relationship between authentication components in Azure AI Bot Service.

Over de Bot Framework-tokenservice

De Bot Framework Token Service is verantwoordelijk voor:

  • Het gebruik van het OAuth-protocol vergemakkelijken met een groot aantal externe services.
  • Veilig tokens opslaan voor een bepaalde bot, kanaal, gesprek en gebruiker.
  • Gebruikerstokens verkrijgen.

    Fooi

    Als de bot een verlopen gebruikerstoken heeft, moet de bot het volgende doen:

    • De gebruiker afmelden
    • De aanmeldingsstroom opnieuw initiëren

Een bot die bijvoorbeeld de recente e-mailberichten van een gebruiker kan controleren, met behulp van de Microsoft Graph API, vereist een gebruikerstoken van een id-provider, in dit geval Microsoft Entra-id. Tijdens het ontwerp voert de botontwikkelaar deze twee belangrijke stappen uit:

  1. Registreert een Microsoft Entra ID-toepassing, een id-provider, met de Bot Framework-tokenservice, via Azure Portal.
  2. Hiermee configureert u een OAuth-verbinding (bijvoorbeeld GraphConnectiongenoemd) voor de bot.

In de volgende afbeelding ziet u de tijdreeks van de interactie van de gebruiker met een bot wanneer een e-mailaanvraag wordt gedaan met behulp van de Microsoft Graph-service.

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

  1. De gebruiker doet een e-mailaanvraag naar de bot.

  2. Een activiteit met dit bericht wordt van de gebruiker naar de Bot Framework-kanaalservice verzonden. De kanaalservice zorgt ervoor dat het userid veld binnen de activiteit is ingesteld en dat het bericht naar de bot wordt verzonden.

    Notitie

    Gebruikers-id's zijn kanaalspecifiek, zoals de Facebook-id van de gebruiker of hun sms-telefoonnummer.

  3. De bot doet een aanvraag naar de Bot Framework-tokenservice waarin wordt gevraagd of deze al een token heeft voor de UserId voor de OAuth-verbinding GraphConnection.

  4. Aangezien dit de eerste keer is dat deze gebruiker interactie heeft gehad met de bot, heeft de Bot Framework-tokenservice nog geen token voor deze gebruiker en retourneert het resultaat NotFound aan de bot.

    Notitie

    Als het token wordt gevonden, worden de verificatiestappen overgeslagen en kan de bot de e-mailaanvraag indienen met behulp van het opgeslagen token.

  5. De bot maakt een OAuthCard met een verbindingsnaam van GraphConnection en antwoorden op de gebruiker die wordt gevraagd zich aan te melden met deze kaart.

  6. De activiteit wordt doorgegeven aan de Bot Framework-kanaalservice, die de Bot Framework-tokenservice aanroept om een geldige OAuth-aanmeldings-URL voor deze aanvraag te maken. Deze aanmeldings-URL wordt toegevoegd aan de OAuthCard en de kaart wordt geretourneerd aan de gebruiker.

  7. De gebruiker krijgt een bericht te zien om u aan te melden door op de aanmeldingsknop van OAuthCard te klikken.

  8. Wanneer de gebruiker op de aanmeldingsknop klikt, opent de kanaalservice een webbrowser en roept de externe service aan om de aanmeldingspagina te laden.

  9. De gebruiker meldt zich aan bij deze pagina voor de externe service. Vervolgens voltooit de externe service de uitwisseling van het OAuth-protocol met de Bot Framework-tokenservice, wat resulteert in de externe service die de Bot Framework-tokenservice verzendt naar het gebruikerstoken. De Bot Framework Token Service slaat dit token veilig op en verzendt een activiteit naar de bot met dit token.

  10. De bot ontvangt de activiteit met het token en kan deze gebruiken om aanroepen uit te voeren op de MS Graph API.

De aanmeldings-URL beveiligen

Een belangrijke overweging wanneer Bot Framework een gebruikersaanmelding vereenvoudigt, is het beveiligen van de aanmeldings-URL. Wanneer een gebruiker een aanmeldings-URL krijgt, wordt deze URL gekoppeld aan een specifieke gespreks-id en gebruikers-id voor die bot. Deel deze URL niet. Dit zorgt ervoor dat de verkeerde aanmelding plaatsvindt voor een bepaald botgesprek. Als u beveiligingsaanvallen wilt beperken die gebruikmaken van een gedeelde aanmeldings-URL, moet u ervoor zorgen dat de computer en de persoon die op de aanmeldings-URL klikt, de persoon is die eigenaar is van het gespreksvenster .

Sommige kanalen, zoals Microsoft Teams, Direct Line en WebChat, kunnen dit doen zonder dat de gebruiker dit noteert. WebChat gebruikt bijvoorbeeld sessiecookies om ervoor te zorgen dat de aanmeldingsstroom plaatsvond in dezelfde browser als het WebChat-gesprek. Voor andere kanalen krijgt de gebruiker echter vaak een magic-code van 6 cijfers te zien. Dit is vergelijkbaar met een ingebouwde meervoudige verificatie, omdat de Bot Framework-tokenservice het token niet vrijgeeft aan de bot, tenzij de gebruiker de laatste verificatie voltooit, wat aangeeft dat de persoon die zich heeft aangemeld toegang heeft tot de chatervaring door de code van 6 cijfers in te voeren.

Belangrijk

Houd rekening met deze belangrijke beveiligingsoverwegingen. Meer informatie vindt u in dit blogbericht: WebChat gebruiken met Azure AI Bot Service-verificatie.

Volgende stappen

Nu u op de hoogte bent van gebruikersverificatie, gaan we eens kijken hoe u dit toepast op uw bot.

Zie ook