Démarrage rapide : acquérir un jeton et appeler Microsoft Graph à partir d'une application démon Java
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 :
- Java Development Kit (JDK) 8 ou version ultérieure
- Maven
Inscrire et télécharger votre application de démarrage rapide
Conseil
Les étapes décrites dans cet article peuvent varier légèrement en fonction du portail de départ.
Étape 1 : Enregistrement de l’application
Pour inscrire votre application et ajouter manuellement les informations d’inscription de l’application à votre solution, procédez comme suit :
- Connectez-vous au centre d’administration de Microsoft Entra au minimum en tant que Développeur d’application.
- Si vous avez accès à plusieurs tenants, utilisez l’icône Paramètres dans le menu supérieur pour basculer vers le tenant dans lequel vous souhaitez enregistrer l’application à partir du menu Répertoires + abonnements.
- Accédez à Identité>Applications>Inscriptions d’applications.
- Sélectionnez Nouvelle inscription.
- Entrez un nom pour votre application (par exemple,
Daemon-console
). Les utilisateurs de votre application peuvent voir ce nom, et vous pouvez le changer ultérieurement. - Sélectionnez Inscription.
- Sous Gérer, sélectionnez Certificats et secrets.
- Sous Secrets du client, sélectionnez Nouveau secret client, entrez un nom, puis sélectionnez Ajouter. Enregistrez la valeur secrète dans un emplacement sûr pour l’utiliser dans une étape ultérieure.
- Sous Gérer, sélectionnez Autorisations de l’API>Ajouter une autorisation. Sélectionnez Microsoft Graph.
- Sélectionnez Autorisations de l’application.
- Sous le nœud Utilisateur, sélectionnez User.Read.All, puis sélectionnez Ajouter des autorisations.
Étape 2 : Télécharger le projet Java
Télécharger le projet de démon Java
Étape 3 : Configurer le projet Java
- Extrayez le fichier .zip dans un dossier local proche de la racine du disque, comme
C:\Azure-Samples
. - Accédez au sous-dossier
msal-client-credential-secret
. - Modifiez
src\main\resources\application.properties
et remplacez les valeurs des champsAUTHORITY
,CLIENT_ID
etSECRET
par l’extrait de code suivant :
AUTHORITY=https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/
CLIENT_ID=Enter_the_Application_Id_Here
SECRET=Enter_the_Client_Secret_Here
Où :
Enter_the_Application_Id_Here
: est l’ID d’application (client) pour l’application que vous avez inscrite.Enter_the_Tenant_Id_Here
: remplacez cette valeur par l’ID du locataire ou le nom du locataire (par exemple, contoso.microsoft.com).Enter_the_Client_Secret_Here
: remplacez cette valeur par le secret client créé à l’étape 1.
Conseil
Pour connaître les valeurs de l’ID d’application (client) et de l’ID de répertoire (locataire), consultez la page Vue d’ensemble de l’application. Pour générer une nouvelle clé, accédez à la page Certificats et secrets.
Étape 4 : Consentement de l’administrateur
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 qu’une autorisation d’application uniquement nécessite le consentement de l’administrateur : un administrateur général de votre annuaire doit accorder son consentement à votre application. Sélectionnez l’une des options ci-dessous en fonction de votre rôle :
Administrateur de locataires général
Si vous avez le rôle d’administrateur client global, accédez à la page Autorisations de l’API dans Inscriptions d’applications et sélectionnez Octroyer le consentement administrateur pour {nom du locataire} (où {nom du locataire} est le nom de votre répertoire).
Utilisateur standard
Si vous êtes un utilisateur standard de votre locataire, vous devez demander à un administrateur général de vous accorder son consentement administrateur 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
Où :
Enter_the_Tenant_Id_Here
: remplacez cette valeur par l’ID du locataire ou le nom du locataire (par exemple, contoso.microsoft.com)Enter_the_Application_Id_Here
: est l’ID d’application (client) pour l’application que vous avez inscrite.
Étape 5 : 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 générera 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 référentiel GitHub pour cet exemple, mais dans le deuxième 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. |
CLIENT_ID |
Est l’ID d’application (client) de l’application inscrite. Vous pouvez retrouver cette valeur dans la page Vue d’ensemble de l’application. |
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 pour indiquer que les étendues demandées sont celles qui sont définies de manière statique dans l’objet application (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. |
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.