Partager via


Utiliser l’authentification unique pour obtenir l’identité de l’utilisateur connecté

Utilisez l’API getAccessToken pour obtenir un jeton d’accès qui contient l’identité de l’utilisateur actuel connecté à Office. Le jeton d’accès est également un jeton d’ID, car il contient des revendications d’identité concernant l’utilisateur connecté, telles que son nom et son adresse e-mail. Vous pouvez également utiliser le jeton d’ID pour identifier l’utilisateur lors de l’appel de vos propres services web. Pour appeler getAccessToken, vous devez configurer votre complément Office pour utiliser l’authentification unique avec Office.

Dans cet article, vous allez créer un complément Office qui obtient le jeton d’ID et affiche le nom, l’adresse e-mail et l’ID unique de l’utilisateur dans le volet Office.

Remarque

L’authentification unique avec Office et l’API getAccessToken ne fonctionne pas dans tous les scénarios. Implémentez toujours une boîte de dialogue de secours pour connecter l’utilisateur lorsque l’authentification unique n’est pas disponible. Pour plus d’informations, voir Authentifier et autoriser avec l’API de boîte de dialogue Office.

Créer une inscription d’application

Pour utiliser l’authentification unique avec Office, vous devez créer une inscription d’application dans le Portail Azure afin que le Plateforme d'identités Microsoft puisse fournir des services d’authentification et d’autorisation pour votre complément Office et ses utilisateurs.

  1. Pour inscrire votre application, accédez à la page Portail Azure - inscriptions d'applications.

  2. Connectez-vous avec les informations d’identification d’administrateur à votre location Microsoft 365. Par exemple : MyName@contoso.onmicrosoft.com.

  3. Sélectionnez Nouvelle inscription. Sur la page Inscrire une application, définissez les valeurs comme suit.

    • Définissez le Nom sur Office-Add-in-SSO.
    • Définissez les Types de comptes pris en charge à Comptes dans un annuaire organisationnel et les comptes personnels Microsoft (par ex. Skype, Xbox et Outlook.com).
    • Définissez le type d’application sur Web , puis définissez URI de redirection surhttps://localhost:[port]/dialog.html. Remplacez par [port] le numéro de port approprié pour votre application web. Si vous avez créé le complément à l’aide de Yo Office, le numéro de port est généralement 3000 et se trouve dans le fichier package.json. Si vous avez créé le complément avec Visual Studio 2019, le port se trouve dans la propriété URL SSL du projet web.
    • Choisissez Inscrire.
  4. Dans la page Office-Add-in-SSO, copiez et enregistrez les valeurs de l’ID d’application (client) et de l’ID d’annuaire (locataire). Vous utiliserez les deux plus tard.

    Remarque

    Cet ID d’application (client) est la valeur « audience » lorsque d’autres applications, telles que l’application cliente Office (par exemple, PowerPoint, Word, Excel), recherchent un accès autorisé à l’application. Il s’agit également de l'« ID client » de l’application lorsqu’elle recherche à son tour un accès autorisé à Microsoft Graph.

  5. Sous Gérer, sélectionnez Authentification. Dans la section Octroi implicite , activez les cases à cocher pour jeton d’accès et jeton d’ID.

  6. En haut du formulaire, sélectionnez Enregistrer.

  7. Sélectionnez Exposer une API sous Gérer. Sélectionnez le lien Définir . Cela génère l’URI d’ID d’application sous la forme api://[app-id-guid], où [app-id-guid] est l’ID d’application (client).

  8. Dans l’ID généré, insérez localhost:[port]/ (notez la barre oblique « / » ajoutée à la fin) entre les barres obliques doubles et le GUID. Remplacez par [port] le numéro de port approprié pour votre application web. Si vous avez créé le complément à l’aide de Yo Office, le numéro de port est généralement 3000 et se trouve dans le fichier package.json. Si vous avez créé le complément avec Visual Studio 2019, le port se trouve dans la propriété URL SSL du projet web.

    Lorsque vous avez terminé, l’ID entier doit avoir le formulaire api://localhost:[port]/[app-id-guid]; par exemple api://localhost:44355/c6c1f32b-5e55-4997-881a-753cc1d563b7.

  9. Sélectionnez le bouton Ajouter une étendue. Dans le panneau qui s’ouvre, entrez access_as_user comme nom de l’étendue<>.

  10. Donnez la valeur Administrateurs et utilisateurs à Qui peut donner son consentement ? .

  11. Renseignez les champs de configuration des invites de consentement de l’administrateur et de l’utilisateur avec les valeurs appropriées pour l’étendue access_as_user qui permet à l’application cliente Office d’utiliser les API web de votre complément avec les mêmes droits que l’utilisateur actuel. Suggestions :

    • Administration nom d’affichage du consentement : Office peut agir en tant qu’utilisateur.
    • Description consentement administrateur : activez Office pour qu’il appelle les API de complément web avec les mêmes droits que l’utilisateur actuel.
    • Nom d’affichage du consentement de l’utilisateur : Office peut agir comme vous.
    • Description du consentement de l’utilisateur : permet à Office d’appeler les API web du complément avec les mêmes droits que vous.
  12. Vérifiez que State est défini comme Activé.

  13. Sélectionnez Ajouter une étendue.

    Remarque

    La partie domaine du nom de l’étendue<> affichée juste en dessous du champ de texte doit correspondre automatiquement à l’URI d’ID d’application que vous avez défini précédemment, avec /access_as_user ajouté à la fin ; par exemple, api://localhost:6789/c6c1f32b-5e55-4997-881a-753cc1d563b7/access_as_user.

  14. Dans la section Applications clientes autorisées , entrez l’ID suivant pour préautoriser tous les points de terminaison d’application Microsoft Office.

    • ea5a67f6-b6f3-4338-b240-c655ddc3cc8e (Tous les points de terminaison d’application Microsoft Office)

    Remarque

    L’ID ea5a67f6-b6f3-4338-b240-c655ddc3cc8e pré-autorise Office sur toutes les plateformes suivantes. Vous pouvez également entrer un sous-ensemble approprié des ID suivants si, pour une raison quelconque, vous souhaitez refuser l’autorisation à Office sur certaines plateformes. Laissez simplement de côté les ID des plateformes à partir desquelles vous souhaitez refuser l’autorisation. Les utilisateurs de votre complément sur ces plateformes ne pourront pas appeler vos API web, mais d’autres fonctionnalités de votre complément fonctionneront toujours.

    • d3590ed6-52b3-4102-aeff-aad2292ab01c (Microsoft Office)
    • 93d53678-613d-4013-afc1-62e9e444a0a5 (Office sur le web)
    • bc59ab01-8403-45c6-8796-ac3ef710b3e3 (Outlook sur le web)
  15. Sélectionnez le bouton Ajouter une application cliente, puis, dans le panneau qui s’ouvre, définissez sur [app-id-guid] l’ID d’application (client) et case activée la zone pour api://localhost:44355/[app-id-guid]/access_as_user.

  16. Sélectionnez Ajouter une application.

  17. Sélectionnez Autorisations API sous Gestion et sélectionnez Ajouter une autorisation. Dans le volet qui s’ouvre, sélectionnez Microsoft Graph, puis Autorisations déléguées.

  18. Utilisez la zone de recherche Sélectionnez les autorisations pour rechercher les autorisations dont votre complément a besoin. Recherchez et sélectionnez l’autorisation de profil . L’autorisation profile est requise pour que l’application Office obtienne un jeton pour votre application web de complément.

    • profil

    Remarque

    L’autorisation User.Read est peut-être déjà répertoriée par défaut. Il est recommandé de ne pas demander les autorisations qui ne sont pas nécessaires. Nous vous recommandons donc de décocher la case pour cette autorisation si votre complément n’en a pas réellement besoin.

  19. Sélectionner le bouton Ajouter des autorisations en bas du panneau.

  20. Sur la même page, choisissez le bouton Accorder le consentement administrateur pour <le nom> du locataire, puis sélectionnez Oui pour la confirmation qui s’affiche.

Créer le complément Office

  1. Démarrez Visual Studio 2019 et choisissez Créer un projet.
  2. Recherchez et sélectionnez le modèle de projet Complément web Excel . Sélectionnez Suivant. Remarque : L’authentification unique fonctionne avec n’importe quelle application Office, mais Excel est l’application utilisée avec cet article.
  3. Entrez un nom de projet, par exemple sso-display-user-info, puis choisissez Créer. Vous pouvez laisser les autres champs aux valeurs par défaut.
  4. Dans la boîte de dialogue Choisir le type de complément , sélectionnez Ajouter une nouvelle fonctionnalité à Excel, puis choisissez Terminer.

Le projet est créé et contient deux projets dans la solution.

  • sso-display-user-info : contient le manifeste et les détails du chargement indépendant du complément dans Excel.
  • sso-display-user-infoWeb : projet ASP.NET qui héberge les pages web du complément.

Configurer le manifeste

Dans Explorateur de solutions, ouvrez sso-display-user-info>sso-display-user-infoManifest>sso-display-user-info.xml.

  1. Près du bas du manifeste se trouve un élément fermant </Resources> . Insérez le code XML suivant juste en dessous de l’élément </Resources> , mais avant l’élément fermant </VersionOverrides> . Pour les applications Office autres qu’Outlook, ajoutez le balisage à la fin de la <VersionOverrides ... xsi:type="VersionOverridesV1_0"> section. Pour Outlook, ajoutez le balisage à la fin de la section <VersionOverrides ... xsi:type="VersionOverridesV1_1">.

    <WebApplicationInfo>
        <Id>[application-id]</Id>
        <Resource>api://localhost:[port]/[application-id]</Resource>
        <Scopes>
            <Scope>openid</Scope>
            <Scope>user.read</Scope>
            <Scope>profile</Scope>
        </Scopes>
    </WebApplicationInfo>
    
  2. Remplacez par [port] le numéro de port correct pour votre projet. Si vous avez créé le complément à l’aide de Yo Office, le numéro de port est généralement 3000 et se trouve dans le fichier package.json. Si vous avez créé le complément avec Visual Studio 2019, le port se trouve dans la propriété URL SSL du projet web.

  3. Remplacez les deux [application-id] espaces réservés par l’ID d’application réel de votre inscription d’application.

  4. Enregistrez le fichier.

Le code XML que vous avez inséré contient les éléments et informations suivants.

  • <WebApplicationInfo> : parent des éléments suivants.
  • <ID> : ID client du complément Il s’agit d’un ID d’application que vous obtenez dans le cadre de l’inscription du complément. VoirEnregistrer un complément Office utilisant une SSO (authentification unique) avec le point de terminaison Azure AD v2.0.
  • <Ressource> : URL du complément. Il s’agit du même URI (y compris le protocoleapi:) que vous avez utilisé lors de l’inscription du complément dans AAD. La partie domaine de cet URI doit correspondre au domaine, y compris les sous-domaines, utilisé dans les URL de la <section Ressources> du manifeste du complément et l’URI doit se terminer par l’ID client dans l’ID<>.
  • <Étendues> : parent d’un ou plusieurs <éléments Scope> .
  • <Étendue> : spécifie une autorisation dont le complément a besoin pour AAD. Les profile autorisations et openID sont toujours nécessaires et peuvent être les seules nécessaires si votre complément n’accède pas à Microsoft Graph. Si c’est le cas, vous avez également besoin <d’éléments Scope> pour les autorisations Microsoft Graph requises ; par exemple, User.Read, Mail.Read. Les biblioth?ques que vous utilisez dans votre code pour acc?der ? Microsoft Graph peuvent avoir des besoin d'autorisations suppl?mentaires. Par exemple, la bibliothèque d’authentification Microsoft (MSAL) pour .NET nécessite l’autorisation offline_access . Pour plus d'informations, voir Autoriser Microsoft Graph ? partir d'un compl?ment Office.

Ajouter le package jwt-decode

Vous pouvez appeler l’API getAccessToken pour obtenir le jeton d’ID à partir d’Office. Tout d’abord, nous allons ajouter le package jwt-decode pour faciliter le décodage et l’affichage du jeton d’ID.

  1. Ouvrez la solution Visual Studio.

  2. Dans le menu, choisissez Outils NuGet>Package ManagerConsole du gestionnaire >de package.

  3. Entrez la commande suivante dans la console du Gestionnaire de package.

    Install-Package jwt-decode -Projectname sso-display-user-infoWeb

Ajouter une interface utilisateur au volet Office

Modifiez le volet Office afin qu’il puisse afficher les informations utilisateur que vous obtiendrez à partir du jeton d’ID.

  1. Ouvrez le fichier Home.html.

  2. Ajoutez la balise de script suivante à la <head> section de la page. Cela inclut le package jwt-decode qui a été ajouté précédemment.

    <script src="Scripts/jwt-decode-2.2.0.js" type="text/javascript"></script>
    
  3. Remplacez la <body> section par le code HTML suivant.

    <body>
      <h1>Welcome</h1>
      <p>
        Sign in to Office, then choose the <b>Get ID Token</b> button to see your
        ID token information.
      </p>
      <button id="getIDToken">Get ID Token</button>
      <div>
        <span id="userInfo"></span>
      </div>
    </body>
    

Appeler l’API getAccessToken

La dernière étape consiste à obtenir le jeton d’ID en appelant getAccessToken.

  1. Ouvrez le fichier Home.js .

  2. Remplacez tout le contenu du fichier par le code suivant.

    (function () {
      "use strict";
    
      // The initialize function must be run each time a new page is loaded.
      Office.initialize = function (reason) {
        $(document).ready(function () {
          $("#getIDToken").on("click", getIDToken);
        });
      };
    
      async function getIDToken() {
        try {
          let userTokenEncoded = await OfficeRuntime.auth.getAccessToken({
            allowSignInPrompt: true,
          });
          let userToken = jwt_decode(userTokenEncoded);
          document.getElementById("userInfo").innerHTML =
            "name: " +
            userToken.name +
            "<br>email: " +
            userToken.preferred_username +
            "<br>id: " +
            userToken.oid;
          console.log(userToken);
        } catch (error) {
          document.getElementById("userInfo").innerHTML =
            "An error occurred. <br>Name: " +
            error.name +
            "<br>Code: " +
            error.code +
            "<br>Message: " +
            error.message;
          console.log(error);
        }
      }
    })();
    
  3. Enregistrez le fichier.

Exécuter du complément

Choisissez Déboguer>Démarrer le débogage ou appuyez sur F5.

  1. Quand Excel démarre, connectez-vous à Office avec le même compte de locataire que celui que vous avez utilisé pour créer l’inscription de l’application.
  2. Dans le ruban Accueil , choisissez Afficher le volet des tâches pour ouvrir le complément.
  3. Dans le volet Office du complément, choisissez Obtenir le jeton d’ID.

Le complément affiche le nom, l’adresse e-mail et l’ID du compte avec lequel vous vous êtes connecté.

Remarque

Si vous rencontrez des erreurs, passez en revue les étapes d’inscription de cet article pour l’inscription de l’application. L’absence d’un détail lors de la configuration de l’inscription de l’application est une cause courante de problèmes liés à l’utilisation de l’authentification unique. Si vous ne parvenez toujours pas à faire en sorte que le complément s’exécute correctement, consultez Résoudre les problèmes liés aux messages d’erreur pour l’authentification unique (SSO).

Arrêter le complément

Choisissez Arrêter le débogage ou appuyez sur Maj+F5.

Voir aussi

Utilisation de revendications pour identifier de manière fiable un utilisateur (objet et ID d’objet)