Partager via


Démarrage rapide : Acquérir un jeton et appeler l’API Microsoft Graph à partir d’une application console Java à l’aide de l’identité de l’application

Bienvenue ! Ce n’est probablement pas la page que vous attendiez. Pendant que nous travaillons sur un correctif, ce lien devrait vous permettre d’accéder au bon article :

Démarrage rapide : acquérir un jeton et appeler Microsoft Graph à partir d'une application démon Java

Nous vous prions de nous excuser pour le désagrément et nous vous remercions de votre patience.

Dans ce guide de démarrage rapide, vous téléchargez et exécutez un exemple de code qui montre comment une application Java peut obtenir un jeton d’accès à l’aide de l’identité de l’application pour appeler l’API Microsoft Graph et afficher une liste d’utilisateurs dans l’annuaire. L’exemple de code montre comment un travail sans assistance ou un service Windows peut s’exécuter avec l’identité d’une application, au lieu de l’identité d’un utilisateur.

Prérequis

Pour exécuter cet exemple, vous avec besoin de ce qui suit :

Télécharger et configurer l’application de démarrage rapide

Étape 1 : Configurer l’application dans le portail Azure

Pour que l’exemple de code fonctionne dans ce guide de démarrage rapide, vous devez créer un secret client et ajouter l’autorisation d’application User.Read.All de l’API Graph.

Déjà configuré Votre application est configurée avec ces attributs.

Étape 2 : Télécharger le projet Java

Notes

Enter_the_Supported_Account_Info_Here

Si vous essayez d’exécuter l’application à ce stade, vous recevez l’erreur HTTP 403 - Interdit : Insufficient privileges to complete the operation. Cette erreur se produit parce que toute autorisation réservée à l’application nécessite le consentement de l’administrateur(-trice) : L’administrateur(-trice) de l’application cloud de votre répertoire doit donner son accord à votre application. Sélectionnez l’une des options ci-dessous en fonction de votre rôle :

Administrateur d'applications cloud

Si vous êtes administrateur(-trice) d’application cloud de votre locataire, allez à la page Autorisations API et sélectionnez Accorder le consentement de l’administrateur(-trice) pour Enter_the_Tenant_Name_Here.

Utilisateur standard

Si vous êtes utilisateur(-trice) standard de votre locataire, vous devez demander à un(e) administrateur(-trice) d’application cloud de vous accorder son consentement administrateur(-trice) pour votre application. Pour ce faire, donnez l’URL suivante à votre administrateur :

https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here

Étape 4 : Exécution de l'application

Vous pouvez tester l’exemple directement en exécutant la méthode main de ClientCredentialGrant.java à partir de votre IDE.

À partir de votre interpréteur de commandes ou de votre ligne de commande :

$ mvn clean compile assembly:single

Cela entraîne la génération d’un fichier msal-client-credential-secret-1.0.0.jar dans votre répertoire /targets. Exécutez celui-ci à l’aide de votre exécutable Java, comme indiqué ci-dessous :

$ java -jar msal-client-credential-secret-1.0.0.jar

Une fois l’application exécutée, elle doit afficher la liste des utilisateurs du locataire configuré.

Important

Cette application de démarrage rapide utilise un secret client pour s’identifier en tant que client confidentiel. Le secret client étant ajouté en texte brut à vos fichiers projet, il est recommandé, pour des raisons de sécurité, d’utiliser un certificat au lieu d’un secret client avant de considérer l’application comme application de production. Pour plus d’informations sur l’utilisation d’un certificat, consultez ces instructions dans le même dépôt GitHub que celui de cet exemple, mais dans le second dossier msal-client-credential-certificate.

Informations complémentaires

MSAL Java

MSAL Java est la bibliothèque utilisée pour connecter les utilisateurs et demander des jetons permettant d’accéder à une API protégée par la plateforme d’identités Microsoft. Comme vous l’avez vu, ce guide de démarrage rapide demande des jetons à l’aide de l’identité de l’application au lieu d’autorisations déléguées. Le flux d’authentification utilisé dans ce cas est désigné sous le terme de flux d’informations d’identification du client OAuth . Pour plus d’informations sur l’utilisation de MSAL Java avec des applications démon, consultez cet article.

Ajoutez MSAL4J à votre application en utilisant Maven ou Gradle pour gérer vos dépendances. Pour cela, apportez les modifications suivantes au fichier pom.xml (Maven) ou build.gradle (Gradle) de votre application.

Dans pom.xml :

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>msal4j</artifactId>
    <version>1.0.0</version>
</dependency>

Dans build.gradle :

compile group: 'com.microsoft.azure', name: 'msal4j', version: '1.0.0'

Initialisation MSAL

Ajoutez la référence à MSAL for Java en ajoutant le code suivant au début du fichier où vous allez utiliser MSAL4J :

import com.microsoft.aad.msal4j.*;

Ensuite, initialisez MSAL à l’aide du code suivant :

IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);

ConfidentialClientApplication cca =
        ConfidentialClientApplication
                .builder(CLIENT_ID, credential)
                .authority(AUTHORITY)
                .build();
Où : Description
CLIENT_SECRET Est le secret client créé pour l’application dans le portail Azure.
CLIENT_ID Est l’ID d’application (client) de l’application inscrite dans le portail Azure. Vous pouvez retrouver cette valeur dans la page Vue d’ensemble de l’application dans le portail Azure.
AUTHORITY Point de terminaison STS pour l’utilisateur à authentifier. Généralement https://login.microsoftonline.com/{tenant} pour un cloud public, où {tenant} est le nom ou l’ID de votre locataire.

Demande de jetons

Pour demander un jeton à l’aide de l’identité d’application, utilisez la méthode acquireToken :

IAuthenticationResult result;
     try {
         SilentParameters silentParameters =
                 SilentParameters
                         .builder(SCOPE)
                         .build();

         // try to acquire token silently. This call will fail since the token cache does not
         // have a token for the application you are requesting an access token for
         result = cca.acquireTokenSilently(silentParameters).join();
     } catch (Exception ex) {
         if (ex.getCause() instanceof MsalException) {

             ClientCredentialParameters parameters =
                     ClientCredentialParameters
                             .builder(SCOPE)
                             .build();

             // Try to acquire a token. If successful, you should see
             // the token information printed out to console
             result = cca.acquireToken(parameters).join();
         } else {
             // Handle other exceptions accordingly
             throw ex;
         }
     }
     return result;
Où : Description
SCOPE Contient les étendues demandées. Pour les clients confidentiels, utilisez un format similaire à {Application ID URI}/.default. Ce format indique que les étendues demandées sont celles qui sont définies de manière statique dans l’objet application défini dans le portail Azure (pour Microsoft Graph, {Application ID URI} pointe vers https://graph.microsoft.com). Pour les API web personnalisées, {Application ID URI} est défini sous la section Exposer une API dans Inscription d’applications sur le portail Azure.

Aide et support

Si vous avez besoin d’aide, si vous souhaitez signaler un problème ou si vous voulez en savoir plus sur vos options de support, consultez Aide et support pour les développeurs.

Étapes suivantes

Pour en savoir plus sur les applications démon, consultez la page de destination du scénario.