Sécuriser des applications WebLogic Java à l’aide de groupes et de revendications de groupe
Cet article explique comment créer une application WebLogic Java qui connecte des utilisateurs avec Microsoft Authentication Library (MSAL) pour Java. L’application restreint également l’accès aux pages en fonction de l’appartenance au groupe de sécurité Microsoft Entra ID.
Le diagramme suivant illustre la topologie de l’application :
L’application cliente utilise MSAL pour Java (MSAL4J) pour connecter des utilisateurs à un locataire Microsoft Entra ID et obtenir un jeton d’ID à partir de l’ID Microsoft Entra. Le jeton d’ID prouve qu’un utilisateur est authentifié auprès de ce locataire. L’application protège ses itinéraires en fonction de l’état d’authentification et de l’appartenance au groupe de l’utilisateur.
Pour une vidéo qui couvre ce scénario, consultez Implémenter l’autorisation dans vos applications à l’aide de rôles d’application, de groupes de sécurité, d’étendues et de rôles d’annuaire.
Prérequis
- JDK version 8 ou ultérieure
- Maven 3
- Un locataire Microsoft Entra ID. Pour plus d’informations, consultez Comment obtenir un locataire Microsoft Entra ID.
- Un compte d’utilisateur dans votre propre locataire Microsoft Entra ID.
- Deux groupes de sécurité et
GroupAdmin
GroupMember
, contenant les utilisateurs avec utilisant lequel vous souhaitez effectuer des tests.
Recommandations
- Certaines familiarités avec java / Jakarta Servlets.
- Vous connaissez bien le terminal Linux/OSX ou Windows PowerShell.
- jwt.ms pour inspecter vos jetons.
- Fiddler pour la supervision de votre activité réseau et la résolution des problèmes.
- Suivez le blog Microsoft Entra ID pour rester à jour avec les derniers développements.
Configurer l’exemple
Les sections suivantes vous montrent comment configurer l’exemple d’application.
Cloner ou télécharger l’exemple de référentiel
Pour cloner l’exemple, ouvrez une fenêtre Bash et utilisez la commande suivante :
git clone https://github.com/Azure-Samples/ms-identity-java-servlet-webapp-authentication.git
cd 3-Authorization-II/groups
Vous pouvez également accéder au référentiel ms-identity-java-servlet-webapp-authentication , puis le télécharger en tant que fichier .zip et l’extraire sur votre disque dur.
Important
Pour éviter les limitations de longueur du chemin de fichier sur Windows, clonez ou extrayez le référentiel dans un répertoire près de la racine de votre disque dur.
Inscrire l’exemple d’application auprès de votre locataire Microsoft Entra ID
Il existe un projet dans cet exemple. Pour inscrire l’application sur le Portail Azure, vous pouvez suivre les étapes de configuration manuelles ou utiliser un script PowerShell. Le script effectue les tâches suivantes :
- Crée les applications Microsoft Entra ID et les objets associés, tels que les mots de passe, les autorisations et les dépendances.
- Modifie les fichiers de configuration du projet.
- Par défaut, configure une application qui fonctionne avec des comptes dans votre annuaire organisationnel uniquement.
Pour exécuter le script PowerShell, procédez comme suit :
Sur Windows, ouvrez PowerShell et accédez à la racine du répertoire cloné.
Utilisez la commande suivante pour définir la stratégie d’exécution pour PowerShell :
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force
Utilisez les commandes suivantes pour exécuter le script de configuration :
cd .\AppCreationScripts\ .\Configure.ps1
Remarque
D’autres méthodes d’exécution des scripts sont décrites dans les scripts de création d’application. Les scripts fournissent également un guide pour l’inscription, la configuration et la suppression automatisées des applications, ce qui peut vous aider dans vos scénarios CI/CD.
Configurer l’application (java-servlet-webapp-groups) pour utiliser l’inscription de votre application
Pour configurer l’application, procédez comme suit :
Remarque
Dans les étapes suivantes, ClientID
il s’agit de la même chose que Application ID
ou AppId
.
Ouvrez le projet dans votre IDE.
Ouvrez le fichier ./src/main/resources/authentication.properties .
Recherchez la chaîne
{enter-your-tenant-id-here}
. Remplacez la valeur existante par votre ID de locataire Microsoft Entra si vous avez inscrit votre application avec les comptes dans cet annuaire organisationnel uniquement .Recherchez la chaîne
{enter-your-client-id-here}
et remplacez la valeur existante par l’ID d’application ouclientId
l’applicationjava-servlet-webapp-groups
copiée à partir du Portail Azure.Recherchez la chaîne
{enter-your-client-secret-here}
et remplacez la valeur existante par la valeur que vous avez enregistrée lors de la création de l’applicationjava-servlet-webapp-groups
, dans le Portail Azure.
Configurer les groupes de sécurité
Vous disposez des options suivantes sur la façon dont vous pouvez configurer davantage vos applications pour recevoir la revendication de groupes :
Recevez tous les groupes auxquels l’utilisateur connecté est affecté dans un locataire Microsoft Entra ID, y compris les groupes imbriqués. Pour plus d’informations, consultez la section Configurer votre application pour recevoir tous les groupes auxquels l’utilisateur connecté est affecté, y compris les groupes imbriqués.
Recevez les valeurs de revendication de groupes d’un ensemble filtré de groupes avec utilisant lequel votre application est programmée pour fonctionner. Pour plus d’informations, consultez la section Configurer votre application pour recevoir les valeurs de revendication de groupes d’un ensemble filtré de groupes auxquels un utilisateur peut être affecté. Cette option n’est pas disponible dans l’édition Gratuite de Microsoft Entra ID.
Remarque
Pour obtenir le groupe local ou On Premises Group Security Identifier
au lieu de l’ID samAccountName
de groupe, consultez la section Conditions préalables à l’utilisation des attributs de groupe synchronisés à partir d’Active Directory dans Configurer les revendications de groupe pour les applications à l’aide de l’ID Microsoft Entra.
Configurez votre application pour recevoir tous les groupes auxquels l’utilisateur connecté est affecté, y compris les groupes imbriqués
Pour configurer votre application, procédez comme suit :
Dans la page d’inscription de l’application, sélectionnez Configuration du jeton dans le volet de navigation pour ouvrir la page dans laquelle vous pouvez configurer les jetons fournis par revendications émis pour votre application.
Sélectionnez Ajouter une revendication de groupes pour ouvrir l’écran Modifier la revendication des groupes.
Sélectionnez Groupes de sécurité OU tous les groupes (y compris les listes de distribution, mais pas les groupes affectés à l’application). Le choix des deux options annule l’effet de l’option Groupes de sécurité.
Sous la section ID , sélectionnez ID de groupe. Cette sélection entraîne l’envoi de l’ID d’objet de l’ID d’objet des groupes auxquels l’utilisateur est affecté dans la revendication de groupe du jeton d’ID reçu par votre application après la connexion d’un utilisateur.
Configurer votre application pour recevoir les valeurs de revendication de groupes d’un ensemble filtré de groupes auxquels un utilisateur peut être affecté
Cette option est utile lorsque les cas suivants sont vrais :
- Votre application s’intéresse à un ensemble sélectionné de groupes auxquels un utilisateur de connexion peut être affecté.
- Votre application n’est pas intéressée par chaque groupe de sécurité auquel cet utilisateur est affecté dans le locataire.
Cette option permet à votre application d’éviter le problème de dépassement.
Remarque
Cette fonctionnalité n’est pas disponible dans l’édition Gratuite de l’ID Microsoft Entra.
Les affectations de groupe imbriquées ne sont pas disponibles lorsque vous utilisez cette option.
Pour activer cette option dans votre application, procédez comme suit :
Dans la page d’inscription de l’application, sélectionnez Configuration du jeton dans le volet de navigation pour ouvrir la page dans laquelle vous pouvez configurer les jetons fournis par revendications émis pour votre application.
Sélectionnez Ajouter une revendication de groupes pour ouvrir l’écran Modifier la revendication des groupes.
Sélectionnez Groupes affectés à l’application.
Choisir des options supplémentaires , telles que les groupes de sécurité ou tous les groupes (y compris les listes de distribution, mais pas les groupes affectés à l’application), annule les avantages que votre application tire du choix d’utiliser cette option.
Sous la section ID , sélectionnez ID de groupe. Cela entraîne l’envoi de l’ID d’objet des groupes auxquels l’utilisateur est affecté dans la revendication de groupe du jeton d’ID.
Si vous exposez une API web à l’aide de l’option Exposer une API , vous pouvez également choisir l’option ID de groupe sous la section Accès . Cette option entraîne l’envoi de l’ID d’objet de l’ID d’objet des groupes auxquels l’utilisateur est affecté dans la revendication de groupes du jeton d’accès.
Dans la page d’inscription de l’application, sélectionnez Vue d’ensemble dans le volet de navigation pour ouvrir l’écran vue d’ensemble de l’application.
Sélectionnez le lien hypertexte avec le nom de votre application dans l’application gérée dans le répertoire local. Ce titre de champ peut être tronqué , par exemple
Managed application in ...
. Lorsque vous sélectionnez ce lien, vous accédez à la page Vue d’ensemble de l’application d’entreprise associée au principal de service de votre application dans le locataire où vous l’avez créée. Vous pouvez revenir à la page d’inscription d’application à l’aide du bouton Précédent de votre navigateur.Sélectionnez Utilisateurs et groupes dans le volet de navigation pour ouvrir la page dans laquelle vous pouvez affecter des utilisateurs et des groupes à votre application.
Sélectionnez Ajouter un utilisateur.
Sélectionnez Utilisateur et groupes à partir de l’écran résultant.
Choisissez les groupes que vous souhaitez affecter à cette application.
Sélectionnez Sélectionner pour terminer la sélection des groupes.
Sélectionnez Affecter pour terminer le processus d’affectation de groupe.
Votre application reçoit maintenant ces groupes sélectionnés dans la revendication de groupes lorsqu’un utilisateur qui se connecte à votre application est membre d’un ou plusieurs de ces groupes attribués.
Sélectionnez Propriétés dans le volet de navigation pour ouvrir la page qui répertorie les propriétés de base de votre application. Définissez l’attribution d’utilisateur requise ? indicateur Oui.
Important
Lorsque vous définissez l’attribution d’utilisateur requise ? sur Oui, l’ID Microsoft Entra case activée s que seuls les utilisateurs affectés à votre application dans le volet Utilisateurs et groupes sont en mesure de se connecter à votre application. Vous pouvez affecter directement des utilisateurs ou en affectant des groupes de sécurité auxquels ils appartiennent.
Configurer l’application (java-servlet-webapp-groups) pour reconnaître les ID de groupe
Pour configurer l’application, procédez comme suit :
Important
Dans la page Configuration du jeton, si vous avez choisi une autre option que groupID ( par exemple DNSDomain\sAMAccountName ), vous devez entrer le nom du groupe dans les étapes suivantes , par exemple, contoso.com\Test Group
au lieu de l’ID d’objet :
Ouvrez le fichier ./src/main/resources/authentication.properties .
Recherchez la chaîne
{enter-your-admins-group-id-here}
et remplacez la valeur existante par l’ID d’objet duGroupAdmin
groupe que vous avez copié à partir du Portail Azure. Supprimez également les accolades de la valeur de l’espace réservé.Recherchez la chaîne
{enter-your-users-group-id-here}
et remplacez la valeur existante par l’ID d’objet duGroupMember
groupe que vous avez copié à partir du Portail Azure. Supprimez également les accolades de la valeur de l’espace réservé.
Générer l’exemple
Pour générer l’exemple à l’aide de Maven, accédez au répertoire contenant le fichier pom.xml de l’exemple, puis exécutez la commande suivante :
mvn clean package
Cette commande génère un fichier .war que vous pouvez exécuter sur différents serveurs d’applications.
Déployer l'exemple
Ces instructions supposent que vous avez installé WebLogic et configuré un domaine serveur.
Avant de pouvoir déployer sur WebLogic, procédez comme suit pour apporter des modifications de configuration dans l’exemple lui-même, puis générer ou reconstruire le package :
Dans l’exemple, recherchez le fichier application.properties ou authentication.properties dans lequel vous avez configuré l’ID client, le locataire, l’URL de redirection, et ainsi de suite.
Dans ce fichier, modifiez les références vers
localhost:8080
oulocalhost:8443
vers l’URL et le port sur lesquels WebLogic s’exécute, ce qui doit êtrelocalhost:7001
par défaut .Vous devez également apporter la même modification dans l’inscription d’application Azure, où vous l’avez définie dans le Portail Azure comme valeur d’URI de redirection sous l’onglet Authentification.
Procédez comme suit pour déployer l’exemple sur WebLogic via la console web :
Démarrez le serveur WebLogic avec DOMAIN_NAME\bin\startWebLogic.cmd.
Accédez à la console web WebLogic dans votre navigateur à l’adresse
http://localhost:7001/console
.Accédez aux déploiements de structure>de domaine, sélectionnez Installer, sélectionnez Charger vos fichiers, puis recherchez le fichier .war que vous avez créé à l’aide de Maven.
Sélectionnez Installer ce déploiement en tant qu’application, sélectionnez Suivant, Terminer, puis Sélectionnez Enregistrer.
La plupart des paramètres par défaut doivent être corrects, sauf que vous devez nommer l’application pour qu’elle corresponde à l’URI de redirection que vous avez défini dans l’exemple de configuration ou l’inscription d’application Azure. Autrement dit, si l’URI de redirection est
http://localhost:7001/msal4j-servlet-auth
, vous devez nommer l’applicationmsal4j-servlet-auth
.Revenez aux déploiements de structure>de domaine et démarrez votre application.
Une fois l’application démarrée, accédez à
http://localhost:7001/<application-name>/
, et vous devriez être en mesure d’accéder à l’application.
Explorer l’exemple
Pour explorer l’exemple, procédez comme suit :
- Notez que l’état de connexion ou de déconnexion s’affiche au centre de l’écran.
- Sélectionnez le bouton contextuel dans le coin. Ce bouton lit la connexion lorsque vous exécutez l’application pour la première fois.
- Dans la page suivante, suivez les instructions et connectez-vous avec un compte dans le locataire Microsoft Entra ID.
- Sur l’écran de consentement, notez les étendues demandées.
- Notez que le bouton contextuel indique maintenant se déconnecter et affiche votre nom d’utilisateur.
- Sélectionnez Détails du jeton d’ID pour afficher certaines revendications décodées du jeton d’ID.
- Sélectionnez Groupes pour afficher des informations sur l’appartenance aux groupes de sécurité pour l’utilisateur connecté.
- Sélectionnez Administration Utilisateur normal ou uniquement pour accéder aux points de terminaison protégés des groupes.
- Si votre utilisateur connecté se trouve dans le
GroupAdmin
groupe, l’utilisateur peut entrer les deux pages. - Si votre utilisateur connecté se trouve dans le
GroupMember
groupe, l’utilisateur peut entrer la page Utilisateur normal uniquement. - Si votre utilisateur connecté n’est dans aucun groupe, l’utilisateur ne peut pas accéder à l’une des deux pages.
- Si votre utilisateur connecté se trouve dans le
- Utilisez le bouton dans le coin pour vous déconnecter.
- Après la déconnexion, sélectionnez Détails du jeton d’ID pour observer que l’application affiche une
401: unauthorized
erreur au lieu des revendications de jeton d’ID lorsque l’utilisateur n’est pas autorisé.
À propos du code
Cet exemple utilise MSAL pour Java (MSAL4J) pour signer un utilisateur et obtenir un jeton d’ID qui peut contenir la revendication des groupes. S’il existe trop de groupes pour l’émission dans le jeton d’ID, l’exemple utilise le Kit de développement logiciel (SDK) Microsoft Graph pour Java pour obtenir les données d’appartenance au groupe auprès de Microsoft Graph. En fonction des groupes auxquels appartient l’utilisateur, l’utilisateur connecté peut accéder à aucun, un ou les deux des pages protégées et Admins Only
Regular Users
.
Si vous souhaitez répliquer le comportement de cet exemple, vous devez ajouter MSAL4J et microsoft Graph SDK à vos projets à l’aide de Maven. Vous pouvez copier le fichier pom.xml et le contenu des dossiers d’assistance et d’authentification dans le dossier src/main/java/com/microsoft/azuresamples/msal4j. Vous avez également besoin du fichier authentication.properties . Ces classes et fichiers contiennent du code générique que vous pouvez utiliser dans un large éventail d’applications. Vous pouvez également copier le reste de l’exemple, mais les autres classes et fichiers sont créés spécifiquement pour traiter l’objectif de cet exemple.
Contenu
Le tableau suivant montre le contenu de l’exemple de dossier de projet :
Fichier/Dossier | Description |
---|---|
AppCreationScripts/ | Scripts pour configurer automatiquement les inscriptions d’applications Microsoft Entra ID. |
src/main/java/com/microsoft/azuresamples/msal4j/groupswebapp/ | Ce répertoire contient les classes qui définissent la logique métier principale de l’application. |
src/main/java/com/microsoft/azuresamples/msal4j/authservlets/ | Ce répertoire contient les classes utilisées pour les points de terminaison de connexion et de déconnexion. |
____Servlet.java | Tous les points de terminaison disponibles sont définis dans .java classes se terminant par ____Servlet.java. |
src/main/java/com/microsoft/azuresamples/msal4j/helpers/ | Classes d’assistance pour l’authentification. |
AuthenticationFilter.java | Redirige les demandes non authentifiées vers des points de terminaison protégés vers une page 401. |
src/main/resources/authentication.properties | Configuration de l’ID et du programme Microsoft Entra. |
src/main/webapp/ | Ce répertoire contient l’interface utilisateur - Modèles JSP |
CHANGELOG.md | Liste des modifications apportées à l’exemple. |
CONTRIBUTING.md | Instructions pour contribuer à l’exemple. |
LICENCE | Licence de l’exemple. |
Traiter une revendication de groupe dans les jetons, y compris la gestion du dépassement
Les sections suivantes décrivent comment l’application traite une revendication de groupe.
Revendication des groupes
L’ID d’objet des groupes de sécurité dont l’utilisateur connecté est membre est retourné dans la revendication de groupes du jeton, illustré dans l’exemple suivant :
{
...
"groups": [
"0bbe91cc-b69e-414d-85a6-a043d6752215",
"48931dac-3736-45e7-83e8-015e6dfd6f7c",]
...
}
Revendication de dépassement de groupe
Pour vous assurer que la taille du jeton ne dépasse pas les limites de taille d’en-tête HTTP, la Plateforme d'identités Microsoft limite le nombre d’ID d’objet qu’elle inclut dans la revendication de groupes.
La limite de dépassement est de 150 pour les jetons SAML, 200 pour les jetons JWT et 6 pour les applications monopage. Si un utilisateur est membre de plus de groupes que la limite de dépassement, le Plateforme d'identités Microsoft n’émet pas les ID de groupe dans la revendication des groupes dans le jeton. Au lieu de cela, il inclut une revendication de dépassement dans le jeton qui indique à l’application d’interroger l’API Microsoft Graph pour récupérer l’appartenance au groupe de l’utilisateur, comme illustré dans l’exemple suivant :
{
...
"_claim_names": {
"groups": "src1"
},
{
"_claim_sources": {
"src1": {
"endpoint":"[Graph Url to get this user's group membership from]"
}
}
...
}
Créer le scénario de dépassement dans cet exemple pour les tests
Pour créer le scénario de dépassement, vous pouvez effectuer les étapes suivantes :
Vous pouvez utiliser le fichier BulkCreateGroups.ps1 fourni dans le dossier AppCreationScripts pour créer un grand nombre de groupes et leur affecter des utilisateurs. Ce fichier permet de tester les scénarios de dépassement pendant le développement. N’oubliez pas de modifier les informations
objectId
fournies par l’utilisateur dans le script BulkCreateGroups.ps1 .Lorsque vous exécutez cet exemple et qu’une surapprovisionnement se produit, vous voyez la
_claim_names
page d’accueil après la connexion de l’utilisateur.Nous vous conseillons vivement d’utiliser la fonctionnalité de filtrage de groupe, le cas échéant, pour éviter d’avoir à exécuter des dépassements de groupe. Pour plus d’informations, consultez la section Configurer votre application pour recevoir les valeurs de revendication de groupes d’un ensemble filtré de groupes auxquels un utilisateur peut être affecté.
Si vous ne pouvez pas éviter l’interruption de groupe, nous vous suggérons d’utiliser les étapes suivantes pour traiter la revendication des groupes dans votre jeton :
- Recherchez la revendication
_claim_names
avec l’une des valeurs en cours de groupes. Cela indique le dépassement. - S’il est trouvé, effectuez un appel au point de terminaison spécifié pour
_claim_sources
extraire les groupes de l’utilisateur. - Si aucune valeur n’a été trouvée, examinez la revendication de groupes pour les groupes de l’utilisateur.
- Recherchez la revendication
Remarque
La gestion du dépassement nécessite un appel à Microsoft Graph pour lire les appartenances de groupe de l’utilisateur connecté. Par conséquent, votre application doit disposer de l’autorisation GroupMember.Read.All pour que la fonction getMemberObjects s’exécute correctement.
Pour plus d’informations sur la programmation de Microsoft Graph, consultez la vidéo Une présentation de Microsoft Graph pour les développeurs.
ConfidentialClientApplication
Une ConfidentialClientApplication
instance est créée dans le fichier AuthHelper.java , comme illustré dans l’exemple suivant. Cet objet permet d’élaborer l’URL d’autorisation Microsoft Entra et d’échanger le jeton d’authentification pour un jeton d’accès.
// getConfidentialClientInstance method
IClientSecret secret = ClientCredentialFactory.createFromSecret(SECRET);
confClientInstance = ConfidentialClientApplication
.builder(CLIENT_ID, secret)
.authority(AUTHORITY)
.build();
Les paramètres suivants sont utilisés pour l’instanciation :
- ID client de l’application.
- Secret client, qui est une exigence pour les applications clientes confidentielles.
- Autorité d’IDENTIFICATION Microsoft Entra, qui inclut votre ID de locataire Microsoft Entra.
Dans cet exemple, ces valeurs sont lues à partir du fichier authentication.properties à l’aide d’un lecteur de propriétés dans le fichier Config.java.
Procédure pas-à-pas
Les étapes suivantes fournissent une procédure pas à pas des fonctionnalités de l’application :
La première étape du processus de connexion consiste à envoyer une demande au
/authorize
point de terminaison sur votre locataire Microsoft Entra ID. L’instance MSAL4JConfidentialClientApplication
est utilisée pour construire une URL de demande d’autorisation. L’application redirige le navigateur vers cette URL, qui est l’emplacement où l’utilisateur se connecte.final ConfidentialClientApplication client = getConfidentialClientInstance(); AuthorizationRequestUrlParameters parameters = AuthorizationRequestUrlParameters.builder(Config.REDIRECT_URI, Collections.singleton(Config.SCOPES)) .responseMode(ResponseMode.QUERY).prompt(Prompt.SELECT_ACCOUNT).state(state).nonce(nonce).build(); final String authorizeUrl = client.getAuthorizationRequestUrl(parameters).toString(); contextAdapter.redirectUser(authorizeUrl);
La liste suivante décrit les fonctionnalités de ce code :
AuthorizationRequestUrlParameters
: paramètres qui doivent être définis pour générer un AuthorizationRequestUrl.REDIRECT_URI
: Où Microsoft Entra redirige le navigateur, ainsi que le code d’authentification, après avoir collecté les informations d’identification de l’utilisateur. Il doit correspondre à l’URI de redirection dans l’inscription de l’application Microsoft Entra ID dans le Portail Azure.SCOPES
: les étendues sont des autorisations demandées par l’application.- Normalement, les trois étendues
openid profile offline_access
suffisent pour recevoir une réponse de jeton d’ID. - Vous trouverez la liste complète des étendues demandées par l’application dans le fichier authentication.properties . Vous pouvez ajouter d’autres étendues telles que User.Read, etc.
- Normalement, les trois étendues
L’utilisateur reçoit une invite de connexion de Microsoft Entra ID. Si la tentative de connexion réussit, le navigateur de l’utilisateur est redirigé vers le point de terminaison de redirection de l’application. Une demande valide adressée à ce point de terminaison contient un code d’autorisation.
L’instance
ConfidentialClientApplication
échange ensuite ce code d’autorisation pour un jeton d’ID et un jeton d’accès à partir de Microsoft Entra ID.// First, validate the state, then parse any error codes in response, then extract the authCode. Then: // build the auth code params: final AuthorizationCodeParameters authParams = AuthorizationCodeParameters .builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES)).build(); // Get a client instance and leverage it to acquire the token: final ConfidentialClientApplication client = AuthHelper.getConfidentialClientInstance(); final IAuthenticationResult result = client.acquireToken(authParams).get();
La liste suivante décrit les fonctionnalités de ce code :
AuthorizationCodeParameters
: paramètres qui doivent être définis pour échanger le code d’autorisation pour un ID et/ou un jeton d’accès.authCode
: code d’autorisation reçu au point de terminaison de redirection.REDIRECT_URI
: l’URI de redirection utilisé à l’étape précédente doit être repassé.SCOPES
: les étendues utilisées à l’étape précédente doivent être passées à nouveau.
Si
acquireToken
réussit, les revendications du jeton sont extraites. Si la nonce case activée passe, les résultats sont placés danscontext
- une instance deIdentityContextData
- et enregistrées dans la session. L’application peut ensuite instancier laIdentityContextData
session à partir d’une instance de chaque fois qu’elle a besoin d’yIdentityContextAdapterServlet
accéder, comme indiqué dans le code suivant :// parse IdToken claims from the IAuthenticationResult: // (the next step - validateNonce - requires parsed claims) context.setIdTokenClaims(result.idToken()); // if nonce is invalid, stop immediately! this could be a token replay! // if validation fails, throws exception and cancels auth: validateNonce(context); // set user to authenticated: context.setAuthResult(result, client.tokenCache().serialize()); // handle groups overage if it has occurred. handleGroupsOverage(contextAdapter);
Après l’étape précédente, vous pouvez extraire les appartenances aux groupes en appelant
context.getGroups()
à l’aide d’une instance deIdentityContextData
.Si l’utilisateur est membre d’un trop grand nombre de groupes - plus de 200 - un appel peut
context.getGroups()
avoir été vide s’il n’était pas pour l’appel àhandleGroupsOverage()
. Pendant ce temps, retournetrue
,context.getGroupsOverage()
signalant qu’un dépassement s’est produit et que l’obtention de la liste complète des groupes nécessite un appel à Microsoft Graph. Consultez lahandleGroupsOverage()
méthode dans AuthHelper.java pour voir comment cette application utilisecontext.setGroups()
lorsqu’il y a un dépassement.
Protéger les itinéraires
Consultez AuthenticationFilter.java pour voir comment l’exemple d’application filtre l’accès aux itinéraires. Dans le fichier authentication.properties , la app.protect.authenticated
propriété contient les itinéraires séparés par des virgules auxquels seuls les utilisateurs authentifiés peuvent accéder, comme illustré dans l’exemple suivant :
# for example, /token_details requires any user to be signed in and does not require special groups claim
app.protect.authenticated=/token_details
Les itinéraires répertoriés dans les ensembles de règles séparés par des virgules sous les app.protect.groups
ensembles de règles sont également hors limites pour les utilisateurs authentifiés non authentifiés, comme illustré dans l’exemple suivant. Toutefois, ces itinéraires contiennent également une liste séparée par l’espace des appartenances aux groupes. Seuls les utilisateurs appartenant à au moins un des groupes correspondants peuvent accéder à ces itinéraires après l’authentification.
# define short names for group IDs here for the app. This is useful in the next property (app.protect.groups).
# EXCLUDE the curly braces, they are in this file only as delimiters.
# example:
# app.groups=groupA abcdef-qrstuvw-xyz groupB abcdef-qrstuv-wxyz
app.groups=admin {enter-your-admins-group-id-here}, user {enter-your-users-group-id-here}
# A route and its corresponding group(s) that can view it, <space-separated>; the start of the next route & its group(s) is delimited by a <comma-and-space-separator>
# this says: /admins_only can be accessed by admin group, /regular_user can be accessed by admin group and user group
app.protect.groups=/admin_only admin, /regular_user admin user
Étendues
Les étendues indiquent à Microsoft Entra ID le niveau d’accès demandé par l’application.
En fonction des étendues demandées, l’ID Microsoft Entra présente un dialogue de consentement à l’utilisateur lors de la connexion. Si l’utilisateur consent à une ou plusieurs étendues et obtient un jeton, les étendues consentées sont encodées dans le résultat access_token
.
Pour connaître les étendues demandées par l’application, consultez authentication.properties. Par défaut, l’application définit la valeur GroupMember.Read.All
des étendues sur . Cette étendue d’API Microsoft Graph particulière est requise si l’application doit appeler Graph pour obtenir les appartenances aux groupes de l’utilisateur.
Plus d’informations
- Bibliothèque d’authentification Microsoft (MSAL) pour Java
- Plateforme d'identités Microsoft (ID Microsoft Entra pour les développeurs)
- Démarrage rapide : Inscrire une application à l’aide de la plateforme d’identités Microsoft
- Présentation des expériences de consentement de l’application Microsoft Entra ID
- Comprendre le consentement de l’utilisateur et de l’administrateur
- Exemples de code MSAL
Étape suivante
Déployer des applications WebLogic Java sur WebLogic sur Azure Machines Virtuelles
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour