Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S'APPLIQUE À : SDK v4
Au moment où un bot doit accéder aux ressources en ligne sécurisées pour le compte de l’utilisateur, telles que la vérification des e-mails, la vérification de l’état de vol ou le passage d’une commande. L’utilisateur doit autoriser le bot à le faire pour son compte, et pour autoriser le bot, l’utilisateur doit authentifier son identité. OAuth est utilisé pour authentifier l’utilisateur et autoriser le bot. Consultez également les types d’authentification.
Si vous souhaitez actualiser vos connaissances OAuth, consultez les rubriques suivantes :
- Vue d’ensemble de OAuth plus facile à suivre que la spécification formelle
- Spécification OAuth
Authentification utilisateur dans une conversation
Pour effectuer certaines opérations pour le compte d’un utilisateur, telles que la vérification des e-mails, le référencement d’un calendrier, la vérification de l’état de vol ou le passage d’une commande, le bot doit appeler un service externe, tel que le service REST de Microsoft Graph, GitHub ou une entreprise. Chaque service externe a un moyen de sécuriser ces appels. Un moyen courant de émettre ces demandes consiste à utiliser un jeton utilisateur qui identifie de manière unique l’utilisateur sur ce service externe (parfois appelé jeton web JSON (JWT)).
Pour sécuriser l’appel à un service externe, le bot doit demander à l’utilisateur de se connecter, afin qu’il puisse acquérir le jeton de l’utilisateur pour ce service. De nombreux services prennent en charge la récupération des jetons via le protocole OAuth ou OAuth2 .
Azure AI Bot Service fournit des cartes et services de connexion spécialisés qui fonctionnent avec le protocole OAuth et gèrent le cycle de vie des jetons. Un bot peut utiliser ces fonctionnalités pour acquérir un jeton utilisateur.
Dans le cadre de la configuration du bot, une connexion OAuth est inscrite dans la ressource Azure AI Bot Service dans Azure.
La connexion contient des informations sur le fournisseur d’identité à utiliser, ainsi qu’un ID client et un secret OAuth valides, les étendues OAuth à activer et toutes les autres métadonnées de connexion requises par ce fournisseur d’identité.
Dans le code du bot, la connexion OAuth est utilisée pour vous aider à connecter l’utilisateur et à obtenir le jeton utilisateur.
L’image suivante montre les éléments impliqués dans le processus d’authentification.
À propos du service de jeton Bot Framework
Le service de jeton Bot Framework est responsable des opérations suivantes :
- Faciliter l’utilisation du protocole OAuth avec un large éventail de services externes.
- Stockage sécurisé des jetons pour un bot, un canal, une conversation et un utilisateur particuliers.
- Acquisition de jetons utilisateur.
Conseil / Astuce
Si le bot a un jeton utilisateur expiré, le bot doit :
- Déconnecter l’utilisateur
- Lancer à nouveau le flux de connexion
Par exemple, un bot qui peut vérifier les e-mails récents d’un utilisateur, à l’aide de l’API Microsoft Graph, nécessite un jeton d’utilisateur à partir d’un fournisseur d’identité, dans ce cas Microsoft Entra ID. Au moment du design, le développeur de bots effectue ces deux étapes importantes :
- Inscrit une application Microsoft Entra ID, un fournisseur d’identité, auprès du service Bot Framework Token, via le portail Azure.
- Configure une connexion OAuth (nommée par exemple
GraphConnection) pour le bot.
L’image suivante montre la séquence temporelle de l’interaction de l’utilisateur avec un bot lorsqu’une demande de messagerie est effectuée à l’aide du service Microsoft Graph.
L’utilisateur envoie une demande par e-mail au bot.
Une activité avec ce message est envoyée de l’utilisateur vers le service de canal du Bot Framework. Le service de canal garantit que le champ
useriddans l'activité a été défini et que le message est envoyé au bot.Remarque
L’ID utilisateur est spécifique au canal, tel que l’ID Facebook de l’utilisateur ou son numéro de téléphone SMS.
Le bot envoie une demande au service de jeton Bot Framework pour vérifier s’il a déjà un jeton pour l’Id utilisateur pour la connexion
GraphConnectionOAuth.Étant donné que c’est la première fois que cet utilisateur a interagit avec le bot, le service de jeton Bot Framework n’a pas encore de jeton pour cet utilisateur et retourne un résultat NotFound au bot.
Remarque
Si le jeton est trouvé, les étapes d’authentification sont ignorées et le bot peut effectuer la demande par e-mail à l’aide du jeton stocké.
Le bot crée une carte OAuthCard avec un nom de connexion
GraphConnectionet répond à l'utilisateur en lui demandant de se connecter à l'aide de cette carte.L’activité passe par le service de canal Bot Framework, qui appelle le service de jeton Bot Framework pour créer une URL de connexion OAuth valide pour cette requête. Cette URL de connexion est ajoutée à OAuthCard et la carte est retournée à l’utilisateur.
L’utilisateur reçoit un message pour se connecter en cliquant sur le bouton de connexion d’OAuthCard.
Lorsque l’utilisateur clique sur le bouton de connexion, le service de canal ouvre un navigateur web et appelle le service externe pour charger sa page de connexion.
L’utilisateur se connecte à cette page pour le service externe. Ensuite, le service externe termine l’échange de protocole OAuth avec le service de jeton Bot Framework, ce qui entraîne l’envoi du service de jeton Bot Framework à l’utilisateur. Bot Framework Token Service stocke ce jeton en toute sécurité et envoie une activité au bot avec ce jeton.
Le bot reçoit l’activité avec le jeton et peut l’utiliser pour effectuer des appels sur l’API MS Graph.
Sécurisation de l’URL de connexion
Une considération importante lorsque Bot Framework facilite la connexion utilisateur consiste à sécuriser l’URL de connexion. Lorsqu’un utilisateur reçoit une URL de connexion, cette URL est associée à un ID de conversation spécifique et à un ID d’utilisateur pour ce bot. Ne partagez pas cette URL, ce qui entraînerait la mauvaise connexion pour une conversation de bot particulière. Pour atténuer les attaques de sécurité qui utilisent une URL de connexion partagée, assurez-vous que l’ordinateur et la personne qui clique sur l’URL de connexion sont la personne propriétaire de la fenêtre de conversation.
Certains canaux tels que Microsoft Teams, Direct Line et WebChat sont en mesure de le faire sans que l’utilisateur note. Par exemple, WebChat utilise des cookies de session pour s’assurer que le flux de connexion a eu lieu dans le même navigateur que la conversation WebChat. Toutefois, pour d’autres canaux, l’utilisateur est souvent présenté avec un code magique à 6 chiffres. Ceci est similaire à une authentification multifacteur intégrée, car le Bot Framework Token Service ne libère le jeton au bot que si l'utilisateur termine l'authentification finale, prouvant l'accès de la personne connectée à l'expérience de messagerie en entrant le code à 6 chiffres.
Important
Gardez à l’esprit ces considérations importantes en matière de sécurité. Vous trouverez des informations supplémentaires dans ce billet de blog : Utilisation de WebChat avec Azure AI Bot Service Authentication.
Étapes suivantes
Maintenant que vous connaissez l’authentification utilisateur, examinons comment l’appliquer à votre bot.