Ajouter du code pour activer l’authentification unique pour les actions universelles des cartes adaptatives
Les étapes d’authentification pour l’authentification unique (SSO) sont similaires à celles d’un bot dans Teams. Voici les étapes à suivre pour obtenir l’authentification unique dans l’action universelle des cartes adaptatives.
Remarque
Pour implémenter le flux d’authentification unique, vous devez disposer d’une conversation un-à-un déclarée pour votre bot dans le manifeste de l’application. Lorsqu’un utilisateur de l’application appelle le flux d’authentification unique via le protocole de carte Action.Execute
adaptative, une invite s’affiche pour autoriser l’utilisateur de l’application à installer l’application dans une étendue personnelle s’il ne l’a pas installée.
Ajouter du code pour gérer un jeton d’accès
Vérifiez que vous avez configuré votre bot dans l’ID Microsoft Entra pour obtenir un jeton d’accès. Vous pouvez mettre à jour le code pour gérer le jeton d’accès pour les actions universelles de cartes adaptatives dans le bot.
S’il existe un jeton mis en cache, le bot utilise le même jeton. Si aucun jeton n’est disponible, la carte adaptative envoie une réponse d’appel au service de bot, qui envoie une carte OAuth avec les valeurs suivantes qui inclut un tokenExchangeResource
pour désigner une opération d’authentification unique :
{
"statusCode": 401,
"type": "application/vnd.microsoft.activity.loginRequest",
"value": {
"text": "Please sign-in",
"connectionName": "<configured-connection-name>",
"tokenExchangeResource": {
"id": "<unique-indentifier>",
"uri": "<application-or-resource-identifier>",
"providerId": "<optional-provider-identifier>"
},
"buttons": [
{
"title": "Sign-In",
"text": "Sign-In",
"type": "signin",
"value": "<sign-in-URL>"
}
]
}
}
Le service de bot fournit la réponse d’appel au client Teams, qui utilise la tokenExchangeResource
valeur et le jeton client Teams pour obtenir un jeton de la part ou un jeton échangeable à partir de l’ID Microsoft Entra.
L’authentification unique échoue lorsque le client Teams ignore la tokenExchangeResource
valeur pour une raison quelconque, y compris des valeurs non valides, des erreurs lors de la récupération des jetons échangeables ou si l’ID Microsoft Entra ne prend pas en charge la valeur. Ensuite, le client Teams déclenche la connexion nominale ou le flux OAuth. Il est recommandé de fournir une URL de connexion dans la réponse ci-dessus afin que le flux OAuth fonctionne.
Boîte de dialogue de consentement pour l’obtention du jeton d’accès
Si l’utilisateur de l’application utilise une carte adaptative pour la première fois, il doit donner son consentement pour que l’application utilise son identité. La boîte de dialogue suivante s’affiche :
Lorsque l’utilisateur de l’application sélectionne Afficher et accepter, la vue de consentement d’autorisation Microsoft Entra existante apparaît pour afficher toutes les autorisations. L’utilisateur de l’application peut continuer avec le flux d’authentification.
Ajouter du code pour recevoir le jeton
Le client Teams envoie à nouveau l’original
adaptiveCard/action
au bot avec le jeton comme suit :{ "type": "invoke", "name": "adaptiveCard/action" "value": { "action": { "id": "abc123", "type": "Action.Execute", "verb": "saveCommand", "data": { "firstName": "Jeff", "lastName": "Derstadt" } }, "authentication": { "id": "8769-xyz", "connectionName": "oauthConnection", "token": "...single sign-on token..." } } }
L’extrait de code suivant montre comment recevoir une activité d’appel dans le service bot :
protected override async Task<InvokeResponse> OnInvokeActivityAsync(ITurnContext<IInvokeActivity> turnContext, CancellationToken cancellationToken) { JObject value = JsonConvert.DeserializeObject<JObject> (turnContext.Activity.Value.ToString()); JObject authentication = null; if (value["authentication"] != null) { authentication = JsonConvert.DeserializeObject<JObject>(value["authentication"].ToString()); } }
Le client Teams envoie une demande d’appel au bot. Le bot reçoit le consentement des utilisateurs de l’application et utilise leur identité pour aider le processus d’échange de jetons avec le service de jeton de l’infrastructure du bot et l’ID Microsoft Entra. Le service de jeton bot framework fournit le jeton d’accès des utilisateurs de l’application au bot.
Le service bot ignore le jeton d’accès si la valeur est incorrecte.
Le service de bot qui rencontre une erreur lors de l’échange de jetons doit répondre avec une erreur ou une deuxième demande de connexion qui n’inclut pas d’informations d’authentification unique. Si le service de bot répond avec une erreur, l’erreur doit être :
{ "statusCode" = 412, "type" = "application/vnd.microsoft.error.preconditionFailed", "value" = { "code" = "412", "message" = "authentication token expired" } }
En cas d’échec de l’authentification unique, le client Teams affiche un bouton de connexion dans le pied de page de la carte pour lancer le flux de connexion nominal.
Le bot utilise le jeton d’accès pour le compte de l’utilisateur de l’application pour effectuer ses actions.
Le bot retourne une réponse sans erreur au client Teams à l’aide d’une carte ou d’un message.
Remarque
Pour gérer le jeton d’accès au cas où l’utilisateur de l’application se déconnecte, consultez Gérer la déconnexion de l’utilisateur de l’application.
Exemple de code
Exemple de nom | Description | .NET | Node.js | Manifeste |
---|---|---|---|---|
Authentification unique pour vos actions universelles de cartes adaptatives | Cet exemple de code montre comment activer l’authentification unique pour vos actions universelles de cartes adaptatives dans le bot. | View | View | View |