Activer l’authentification unique pour l’application Teams
Article
Microsoft Teams fournit une fonction d’authentification unique (SSO) permettant à une application d’obtenir un jeton d’utilisateur Teams connecté pour accéder à Microsoft Graph et à d’autres API. Microsoft Teams Toolkit simplifie le processus en incorporant certains flux de travail et intégrations Microsoft Entra dans des API simples et de haut niveau. Par conséquent, vous pouvez facilement incorporer des fonctionnalités d’authentification unique dans votre application Teams. Pour plus d’informations, consultez Authentifier les utilisateurs dans Microsoft Teams.
Configurations de clés
Pour activer l’authentification unique, configurez votre application Teams comme suit :
Microsoft Entra manifeste de l’application : veillez à définir des URI, y compris l’URI qui identifie l’application d’authentification Microsoft Entra et l’URI de redirection qui retourne le jeton.
Manifeste de l’application Teams : connectez votre application d’authentification unique à votre application Teams en incorporant la configuration correcte.
Fichiers de configuration et d’infrastructure du Kit de ressources Teams : vérifiez que les configurations nécessaires sont en place pour activer l’authentification unique pour votre application Teams.
Informations sur l’application SSO dans les fichiers de configuration du kit de ressources Teams : vérifiez que l’application d’authentification s’inscrit sur le service back-end et que Teams Toolkit l’initie pendant le débogage ou la préversion de l’application Teams.
Téléchargez le modèle de manifeste d’application Microsoft Entra.
Ajoutez le code du modèle de manifeste d’application téléchargé au ./aad.manifest.json fichier. Cela vous permet de personnaliser différents aspects de l’inscription de votre application et de mettre à jour le manifeste en fonction des besoins. Pour plus d'informations, voir app manifest
Mettre à jour le manifeste de l’application Teams
Dans le ./appPackages/manifest.json fichier, ajoutez le code suivant :
webApplicationInfofournit votre ID d’application Microsoft Entra et les informations Microsoft Graph pour aider les utilisateurs à se connecter à votre application.
Remarque
Vous pouvez utiliser {{ENV_NAME}} pour référencer des variables dans un env/.env.{TEAMSFX_ENV} fichier.
Mettre à jour les fichiers de configuration du Kit de ressources Teams
Localisez vos fichiers de configuration teams Toolkit, tels que ./teamsapp.yml et ./teamsapp.local.yml. Mettez à jour les configurations requises liées aux Microsoft Entra dans ces fichiers.
Ajoutez l’action aadApp/create sous provision dans ./teamsapp.yml et ./teamsapp.local.yml pour créer une application Microsoft Entra utilisée pour l’authentification unique :
Mettez à jour la manifestPath valeur sur le chemin d’accès relatif du modèle aad.manifest.jsonde manifeste d’application Microsoft Entra , si vous avez modifié le chemin d’accès du fichier.
Dans une configuration locale, positionnez après aad/update l’action file/createOrUpdateEnvironmentFile . Cela est obligatoire, car aad/update utilise la sortie de file/createOrUpdateEnvironmentFile.
Pour plus d’informations, consultez l’article à l’adresse aadApp/update
Pour un projet React, mettez à jour cli/runNpmCommand sous deploy.
Si vous créez une application d’onglet à l’aide de l’infrastructure React dans l’interface CLI, recherchez l’action cli/runNpmCommand avec build app dans le teamsapp.yml fichier et ajoutez les variables d’environnement suivantes :
Si vous créez une application d’onglet avec React framework, recherchez l’action file/createOrUpdateEnvironmentFile de déploiement dans teamsapp.local.yml un fichier et ajoutez les variables d’environnement suivantes :
Une fois les modifications ci-dessus implémentées, votre environnement est préparé. Vous pouvez maintenant mettre à jour votre code pour incorporer l’authentification unique dans votre application Teams.
JavaScript à la vanille
Pour une application d’onglet qui n’utilise pas React, utilisez le code suivant comme exemple de base pour obtenir le jeton d’authentification unique :
Pour mettre à jour votre code source, procédez comme suit :
Déplacez les auth-start.html fichiers et auth-end.html du auth/public dossier vers le public/ dossier . Ces fichiers HTML servent à gérer les redirections d’authentification.
Déplacez sso le dossier sous auth/ vers src/sso/.
InitTeamsFx: ce fichier exécute une fonction qui initialise le Kit de développement logiciel (SDK) TeamsFx. Après l’initialisation du Kit de développement logiciel (SDK), le composant s’ouvre GetUserProfile .
GetUserProfile: ce fichier exécute une fonction pour récupérer les informations utilisateur en appelant le API Graph Microsoft.
Téléchargez le modèle de manifeste d’application Microsoft Entra.
Ajoutez le code du modèle de manifeste d’application téléchargé au ./aad.manifest.json fichier. Cela vous permet de personnaliser différents aspects de l’inscription de votre application et de mettre à jour le manifeste en fonction des besoins. Pour plus d'informations, voir app manifest
Mettre à jour le manifeste de l’application Teams
Dans le ./appPackages/manifest.json fichier, ajoutez le code suivant :
webApplicationInfofournit votre ID d’application Microsoft Entra et les informations Microsoft Graph pour aider les utilisateurs à se connecter à votre application.
Remarque
Vous pouvez utiliser {{ENV_NAME}} pour référencer des variables dans un env/.env.{TEAMSFX_ENV} fichier.
Inscrivez une ou plusieurs commandes dans commandLists.
Inclut commandLists des commandes que votre bot peut suggérer aux utilisateurs. Si vous utilisez le modèle de teamsFx bot, définissez les valeurs suivantes :
{
"title": "profile",
"description": "Show user profile using Single Sign On feature"
}
Le validDomains champ inclut les domaines pour les sites web que l’application charge dans le client Teams. Mettez à jour la valeur suivante :
"validDomains": [
"${{BOT_DOMAIN}}"
]
Mettre à jour les fichiers de configuration du Kit de ressources Teams
Localisez vos fichiers de configuration teams Toolkit, tels que ./teamsapp.yml et ./teamsapp.local.yml. Mettez à jour les configurations nécessaires liées aux Microsoft Entra dans ces fichiers.
Ajoutez le code aadApp/create suivant sous provision et ./teamsapp.yml./teamsapp.local.yml pour créer des applications Microsoft Entra utilisées pour l’authentification unique :
Mettez à jour la manifestPath valeur sur le chemin d’accès relatif du modèle aad.manifest.jsonde manifeste d’application Microsoft Entra , si vous avez modifié le chemin d’accès du fichier.
Pour plus d’informations, consultez l’article à l’adresse aadApp/update
Localisez l’action createOrUpdateEnvironmentFile dans le teamsapp.local.yml fichier et ajoutez les variables d’environnement suivantes :
Mettez à jour les configurations liées à Microsoft Entra dans votre service distant. L’exemple suivant montre les paramètres de configuration sur une application web Azure :
M365_CLIENT_ID: ID client de l’application Microsoft Entra
M365_CLIENT_SECRET: clé secrète client de l’application Microsoft Entra
M365_TENANT_ID: ID de locataire de l’application Microsoft Entra
INITIATE_LOGIN_ENDPOINT: Page de démarrage de la connexion pour l’authentification
M365_AUTHORITY_HOST: hôte d’autorité OAuth de l’application Microsoft Entra
M365_APPLICATION_ID_URI: URI d’identificateur pour Microsoft Entra’application
Pour utiliser l’onglet ou le teamsFx modèle de bot, procédez comme suit :
Ouvrez le infra/azure.parameters.json fichier et ajoutez le code suivant :
Pour ajouter des configurations supplémentaires à votre application web Azure, ajoutez les configurations dans .webAppSettings
Vous devrez peut-être également définir la version de nœud par défaut en ajoutant la configuration suivante : bash WEBSITE_NODE_DEFAULT_VERSION: '14.20.0'
Déplacez les fichiers situés dans le auth/sso dossier vers src. La ProfileSsoCommandHandler classe sert de gestionnaire de commandes d’authentification unique, conçu pour récupérer les informations utilisateur à l’aide d’un jeton d’authentification unique. Vous pouvez adopter cette méthode pour développer votre propre gestionnaire de commandes d’authentification unique.
Déplacez le auth/public dossier vers src/public. Ce dossier contient des pages HTML pour l’application bot. Lors du lancement de flux d’authentification unique avec Microsoft Entra, l’utilisateur est redirigé vers ces pages.
Exécutez la commande suivante dans le ./ dossier :
npm install copyfiles --save-dev
Mettez à jour la commande suivante dans le package.json fichier :
Mettez à jour commandApp.requestHandler pour vous assurer que l’authentification fonctionne avec le code suivant :
await commandApp.requestHandler(req, res).catch((err) => {
// Error message including "412" means it is waiting for user's consent, which is a normal process of SSO, sholdn't throw this error.
if (!err.message.includes("412")) {
throw err;
}
});
Ajoutez ssoConfig et ssoCommands dans ConversationBot :src/internal/initialize
import { ProfileSsoCommandHandler } from "../profileSsoCommandHandler";
export const commandBot = new ConversationBot({
...
// To learn more about ssoConfig, please refer teamsfx sdk document: https://docs.microsoft.com/microsoftteams/platform/toolkit/teamsfx-sdk
ssoConfig: {
aad :{
scopes:["User.Read"],
},
},
command: {
enabled: true,
commands: [new HelloWorldCommandHandler() ],
ssoCommands: [new ProfileSsoCommandHandler()],
},
});
Déplacez le auth/public dossier vers src/public. Ce dossier contient des pages HTML pour l’application bot. Lors du lancement de flux d’authentification unique avec Microsoft Entra, l’utilisateur est redirigé vers ces pages.
Mettez à jour votre src/index fichier pour ajouter le approprié restify:
const path = require("path");
// Listen for incoming requests.
server.post("/api/messages", async (req, res) => {
await adapter.process(req, res, async (context) => {
await bot.run(context);
}).catch((err) => {
// Error message including "412" means it is waiting for user's consent, which is a normal process of SSO, sholdn't throw this error.
if(!err.message.includes("412")) {
throw err;
}
})
});
server.get(
"/auth-:name(start|end).html",
restify.plugins.serveStatic({
directory: path.join(__dirname, "public"),
})
);
Exécutez les commandes suivantes sous le ./ dossier :
npm install @microsoft/teamsfx
npm install isomorphic-fetch
Implémentez la clé handleMessageExtensionQueryWithSSO API dans TeamsActivityHandler.handleTeamsMessagingExtensionQuery.
Installez copyfiles les packages npm dans votre projet de bot TypeScript et mettez à jour le script dans src/package.json le build fichier comme suit :
Les pages HTML utilisées pour la redirection d’authentification sont copiées lors de la création de ce projet de bot.
Mettez à jour templates/appPackage/aad.template.json le fichier avec les étendues que vous utilisez dans la handleMessageExtensionQueryWithSSO fonction :
Pour déboguer votre application, sélectionnez la touche F5 . Teams Toolkit utilise le manifeste Microsoft Entra pour inscrire une application prenant en charge l’authentification unique. Pour plus d’informations, consultez Déboguer votre application Teams localement.
Personnaliser les applications Microsoft Entra
Le manifeste d’application Teams vous permet de personnaliser différents aspects de l’inscription de votre application. Vous pouvez mettre à jour le manifeste en fonction des besoins.
La source de ce contenu se trouve sur GitHub, où vous pouvez également créer et examiner les problèmes et les demandes de tirage. Pour plus d’informations, consultez notre guide du contributeur.