Sécuriser des applications Java Spring Boot à l’aide de groupes et de revendications de groupe
Cet article illustre une application web Java Spring Boot qui utilise la bibliothèque cliente Spring Boot Starter d’ID Microsoft Entra pour Java pour l’authentification, l’autorisation et l’acquisition de jetons. L’application utilise le protocole OpenID Connecter pour connecter des utilisateurs et limite l’accès aux pages en fonction de l’appartenance au groupe de sécurité Azure Active Directory.
Le diagramme suivant illustre la topologie de l’application :
L’application cliente utilise la bibliothèque cliente Spring Boot Starter d’ID Microsoft Entra pour Java afin de connecter des utilisateurs dans un locataire Microsoft Entra ID et d’obtenir un jeton d’ID à partir de l’ID Microsoft Entra.
Le jeton d’ID contient la revendication des groupes. L’application charge les revendications dans la liste Spring GrantedAuthorities
de l’utilisateur connecté. Ces valeurs déterminent les pages auxquelles l’utilisateur est autorisé à accéder.
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 15. Cet exemple a été développé sur un système avec Java 15, mais il peut être compatible avec d’autres versions.
- Maven 3
- Le pack d’extension Java pour Visual Studio Code est recommandé pour exécuter cet exemple dans Visual Studio Code.
- Un locataire Microsoft Entra ID. Pour plus d’informations, consultez Démarrage rapide : Configurer un locataire.
- Un compte d’utilisateur dans votre locataire Microsoft Entra ID. Cet exemple ne fonctionne pas avec un compte Microsoft personnel. Par conséquent, si vous vous êtes connecté au Portail Azure avec un compte personnel et que vous n’avez pas de compte d’utilisateur dans votre annuaire, vous devez en créer un maintenant.
- Deux groupes de sécurité, nommés
AdminGroup
etUserGroup
contenant l’utilisateur ou les utilisateurs que vous souhaitez signer et tester cet exemple. Vous pouvez également ajouter l’utilisateur à deux groupes de sécurité existants dans votre locataire. Si vous choisissez d’utiliser des groupes existants, veillez à modifier l’exemple de configuration pour utiliser le nom et l’ID d’objet de vos groupes de sécurité existants. - Visual Studio Code
- Azure Tools pour Visual Studio Code
Recommandations
- Certaines connaissances de Spring Framework
- Certaines connaissances sur 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-spring-tutorial.git
cd ms-identity-java-spring-tutorial
cd 3-Authorization-II/groups
Vous pouvez également accéder au référentiel ms-identity-java-spring-tutorial , 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 Azure Active Directory
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.
Pour exécuter le script PowerShell, procédez comme suit :
Sur Windows, exécutez PowerShell en tant qu’administrateur et accédez à la racine du répertoire cloné.
Si vous débutez avec Azure AD PowerShell, consultez les scripts de création d’application dans le référentiel source pour vous assurer que votre environnement est préparé correctement.
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.
Configurez votre exemple de code pour utiliser vos groupes d’inscription et de sécurité d’application (java-spring-webapp-groups)
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\application.yml .
Recherchez l’espace réservé
Enter_Your_Tenant_ID_Here
et remplacez la valeur existante par votre ID de locataire Microsoft Entra.Recherchez l’espace réservé
Enter_Your_Client_ID_Here
et remplacez la valeur existante par l’ID d’application ouclientId
l’applicationjava-spring-webapp-groups
copiée à partir du Portail Azure.Recherchez l’espace réservé
Enter_Your_Client_Secret_Here
et remplacez la valeur existante par la valeur que vous avez enregistrée lors de la création d’unejava-spring-webapp-groups
copie à partir du Portail Azure.Recherchez l’espace réservé
Enter_Your_Admin_Group_ID_Here
et remplacez la valeur existante par laobjectId
valeur de votre Administration Group.Recherchez l’espace réservé
Enter_Your_User_Group_ID_Here
et remplacez la valeur existante par laobjectId
valeur de votre UserGroup.Ouvrez le fichier src/main/java/com/microsoft/azuresamples/msal4j/msidentityspringbootwebapp/SampleController.java .
Recherchez l’espace réservé
Enter_Your_Admin_Group_ID_Here
et remplacez la valeur existante par laobjectId
valeur de votre Administration Group.Recherchez l’espace réservé
Enter_Your_User_Group_ID_Here
et remplacez la valeur existante par laobjectId
valeur de votre UserGroup.
Exécution de l'exemple
Les sections suivantes vous montrent comment déployer l’exemple sur Azure Spring Apps.
Prérequis
Si vous déployez une instance du plan Entreprise Azure Spring Apps pour la première fois dans l’abonnement cible, consultez la section Exigences du Plan Entreprise dans la Place de marché Azure.
Plug-in Maven pour Azure Spring Apps. Si Maven n’est pas votre outil de développement préféré, consultez les didacticiels similaires suivants qui utilisent d’autres outils :
Préparer le projet Spring
Suivez la procédure ci-dessous pour préparer le projet :
Utilisez la commande Maven suivante pour générer le projet :
mvn clean package
Exécutez l’exemple de projet localement à l’aide de la commande suivante :
mvn spring-boot:run
Configurer le plug-in Maven
Exécutez la commande suivante à la racine du projet pour configurer l’application à l’aide du plug-in Maven pour Azure Spring Apps :
mvn com.microsoft.azure:azure-spring-apps-maven-plugin:1.19.0:config
La liste suivante décrit les interactions de commande :
- Connexion OAuth2 : vous devez autoriser la connexion à Azure en fonction du protocole OAuth2.
- Sélectionnez un abonnement : sélectionnez le numéro de liste d’abonnements dans lequel vous souhaitez créer votre instance Azure Spring Apps, qui correspond par défaut au premier abonnement de la liste. Si vous souhaitez utiliser le numéro par défaut, appuyez sur Entrée.
- Entrez le nom d’Azure Spring Apps : entrez le nom de l’instance spring apps que vous souhaitez créer. Si vous souhaitez utiliser le nom par défaut, appuyez sur Entrée.
- Entrez le nom du groupe de ressources : entrez le nom du groupe de ressources dans lequel vous souhaitez créer votre instance spring apps. Si vous souhaitez utiliser le nom par défaut, appuyez sur Entrée.
- Références SKU : sélectionnez la référence SKU que vous souhaitez utiliser pour votre instance spring apps. Si vous souhaitez utiliser le numéro par défaut, appuyez sur Entrée.
- Entrer le nom de l’application : indiquez un nom pour l’application. Si vous souhaitez utiliser l’ID d’artefact de projet par défaut, appuyez sur Entrée.
- Runtimes : sélectionnez le runtime que vous souhaitez utiliser pour votre instance spring apps. Dans ce cas, vous devez utiliser le numéro par défaut. Appuyez donc sur Entrée.
- Exposer l’accès public pour cette application (boot-for-azure) : appuyez sur o.
- Confirmez pour enregistrer toutes les configurations ci-dessus : appuyez sur y (oui). Si vous appuyez sur n, la configuration n’est pas enregistrée dans le fichier .pom .
L’exemple suivant montre la sortie du processus de déploiement :
Summary of properties:
Subscription id : 12345678-1234-1234-1234-123456789101
Resource group name : rg-ms-identity-spring-boot-webapp
Azure Spring Apps name : cluster-ms-identity-spring-boot-webapp
Runtime Java version : Java 11
Region : eastus
Sku : Standard
App name : ms-identity-spring-boot-webapp
Public access : true
Instance count/max replicas : 1
CPU count : 1
Memory size(GB) : 2
Confirm to save all the above configurations (Y/n):
[INFO] Configurations are saved to: /home/user/ms-identity-java-spring-tutorial/1-Authentication/sign-in/pom. xml
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:57 min
[INFO] Finished at: 2024-02-14T13:50:44Z
[INFO] ------------------------------------------------------------------------
Une fois que vous avez confirmé vos choix, le plug-in ajoute l’élément de plug-in et les paramètres requis au fichier de pom.xml de votre projet pour configurer votre application à exécuter dans Azure Spring Apps.
La partie pertinente du fichier pom.xml doit ressembler à l’exemple suivant :
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-spring-apps-maven-plugin</artifactId>
<version>1.19.0</version>
<configuration>
<subscriptionId>12345678-1234-1234-1234-123456789101</subscriptionId>
<resourceGroup>rg-ms-identity-spring-boot-webapp</resourceGroup>
<clusterName>cluster-ms-identity-spring-boot-webapp</clusterName>
<region>eastus</region>
<sku>Standard</sku>
<appName>ms-identity-spring-boot-webapp</appName>
<isPublic>true</isPublic>
<deployment>
<cpu>1</cpu>
<memoryInGB>2</memoryInGB>
<instanceCount>1</instanceCount>
<runtimeVersion>Java 11</runtimeVersion>
<resources>
<resource>
<directory>${project.basedir}/target</directory>
<includes>
<include>*.jar</include>
</includes>
</resource>
</resources>
</deployment>
</configuration>
</plugin>
Vous pouvez modifier les configurations d’Azure Spring Apps directement dans votre fichier pom.xml . Certaines configurations courantes sont répertoriées dans le tableau suivant :
Propriété | Obligatoire | Description |
---|---|---|
subscriptionId |
false | L'ID de l'abonnement. |
resourceGroup |
true | Groupe de ressources Azure pour votre instance Azure Spring Apps. |
clusterName |
true | Nom du cluster Azure Spring Apps. Si vous utilisez un abonnement et un groupe de ressources sur utilisant déjà une instance Azure Spring Apps déployée, vous pouvez également utiliser ce cluster existant pour le déployer. |
appName |
true | Nom de votre application dans Azure Spring Apps. |
region |
false | Région dans laquelle héberger votre instance Azure Spring Apps. La valeur par défaut est eastus . Pour les régions valides, consultez Régions prises en charge. |
sku |
false | Niveau tarifaire de votre instance Azure Spring Apps. La valeur par défaut est Basic , qui est adaptée uniquement aux environnements de développement et de test. |
runtime |
false | Configuration de l’environnement d’exécution. Pour plus d’informations, consultez Détails de configuration. |
deployment |
false | Configuration du déploiement. Pour plus d’informations, consultez Détails de configuration. |
Pour obtenir la liste complète des configurations, consultez la documentation de référence sur le plug-in. Tous les plug-ins Azure Maven partagent un ensemble commun de configurations. Pour ces configurations, consultez Configurations courantes. Pour connaître les configurations spécifiques à Azure Spring Apps, consultez Azure Spring Apps : Détails de configuration.
Veillez à enregistrer les valeurs et appName
les clusterName
valeurs pour une utilisation ultérieure.
Préparer l’application pour le déploiement
Lorsque vous déployez votre application sur Azure Spring Apps, votre URL de redirection passe à l’URL de redirection de votre instance d’application déployée dans Azure Spring Apps. Procédez comme suit pour modifier ces paramètres dans votre fichier application.yml :
Accédez au fichier src\main\resources\application.yml de votre application et modifiez la valeur du
post-logout-redirect-uri
nom de domaine de votre application déployée, comme illustré dans l’exemple suivant. Par exemple, si vous avez choisicluster-ms-identity-spring-boot-webapp
votre instance Azure Spring Apps à l’étape précédente etms-identity-spring-boot-webapp
pour le nom de votre application, vous devez maintenant l’utiliserhttps://cluster-ms-identity-spring-boot-webapp-ms-identity-spring-boot-webapp.azuremicroservices.io
pour lapost-logout-redirect-uri
valeur.post-logout-redirect-uri: https://<cluster-name>-<app-name>.azuremicroservices.io
Après avoir enregistré ce fichier, utilisez la commande suivante pour reconstruire votre application :
mvn clean package
Important
Le fichier application.yml de l’application contient actuellement la valeur de votre clé secrète client dans le client-secret
paramètre. Il n’est pas recommandé de conserver cette valeur dans ce fichier. Vous risquez peut-être également de le valider dans un dépôt Git.
En guise d’étape de sécurité supplémentaire, vous pouvez stocker cette valeur dans Azure Key Vault et charger le secret à partir de Key Vault pour le rendre disponible dans votre application.
Mettre à jour votre inscription d’application Microsoft Entra ID
Étant donné que l’URI de redirection change vers votre application déployée sur Azure Spring Apps, vous devez également modifier l’URI de redirection dans l’inscription de votre application Microsoft Entra ID. Pour cela, effectuez les étapes suivantes :
Accédez à la page Inscriptions d’applications de la plateforme d’identités Microsoft pour les développeurs.
Utilisez la zone de recherche pour rechercher l’inscription de votre application , par exemple
java-servlet-webapp-authentication
.Ouvrez votre inscription d’application en sélectionnant son nom.
Sélectionnez Authentification dans le menu déroulant.
Dans la section URI de redirection web - , sélectionnez Ajouter un URI.
Renseignez l’URI de votre application, en ajoutant
/login/oauth2/code/
, par exemplehttps://<cluster-name>-<app-name>.azuremicroservices.io/login/oauth2/code/
.Sélectionnez Enregistrer.
Déployer l’application
Utilisez la commande suivante pour déployer l’application :
mvn azure-spring-apps:deploy
La liste suivante décrit l’interaction de commande :
- Connexion OAuth2 : vous devez autoriser la connexion à Azure en fonction du protocole OAuth2.
Une fois la commande exécutée, les messages de journal suivants indiquent que le déploiement a réussi :
[INFO] Deployment(default) is successfully created
[INFO] Starting Spring App after deploying artifacts...
[INFO] Deployment Status: Running
[INFO] InstanceName:demo-default-x-xxxxxxxxxx-xxxxx Status:Running Reason:null DiscoverStatus:UNREGISTERED
[INFO] InstanceName:demo-default-x-xxxxxxxxx-xxxxx Status:Terminating Reason:null DiscoverStatus:UNREGISTERED
[INFO] Getting public url of app(demo)...
[INFO] Application url: https://<your-Azure-Spring-Apps-instance-name>-demo.azuremicroservices.io
Valider l’application
Une fois le déploiement terminé, accédez à l’application avec l’URL de l’application de sortie. Procédez comme suit pour vérifier les journaux d’activité de l’application afin d’identifier un éventuel problème de déploiement :
Accédez à l’URL de l’application de sortie à partir de la page Sorties de la section Déploiement .
Dans le volet de navigation de la page Vue d’ensemble de l’instance Azure Spring Apps, sélectionnez Journaux d’activité pour vérifier les journaux d’activité de 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. Vous pouvez également sélectionner les détails du jeton, les administrateurs uniquement ou les utilisateurs réguliers. Étant donné que ces pages sont protégées et nécessitent une authentification, vous êtes automatiquement redirigé vers la page de connexion.
- 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.
- Une fois le flux de connexion terminé, vous devez être redirigé vers la page d’accueil , qui affiche l’état de connexion ou l’une des autres pages, selon le bouton qui a déclenché votre flux de connexion.
- Notez que le bouton contextuel indique maintenant se déconnecter et affiche votre nom d’utilisateur.
- Si vous êtes sur la page d’accueil, sélectionnez Détails du jeton d’ID pour afficher certaines revendications décodées du jeton d’ID, y compris les groupes.
- Sélectionnez Administration s uniquement pour afficher le
/admin_only
fichier . Seuls les utilisateurs appartenant auAdminGroup
groupe de sécurité peuvent afficher cette page. Sinon, un message d’échec d’autorisation s’affiche. - Sélectionnez Utilisateurs réguliers pour afficher la
/regular_user
page. Seuls les utilisateurs appartenant auUserGroup
groupe de sécurité peuvent afficher cette page. Sinon, un message d’échec d’autorisation s’affiche. - Utilisez le bouton dans le coin pour vous déconnecter. La page d’état reflète le nouvel état.
À propos du code
Cet exemple montre comment utiliser la bibliothèque cliente Spring Boot Starter d’ID Microsoft Entra pour Java afin de connecter des utilisateurs à votre locataire Microsoft Entra ID. L’exemple utilise également les démarrages spring Oauth2 Client et Spring Web Boot. L’exemple utilise les revendications du jeton d’ID obtenu à partir de l’ID Microsoft Entra pour afficher les détails de l’utilisateur connecté et pour restreindre l’accès à certaines pages à l’aide de la revendication de groupes pour l’autorisation.
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. |
pom.xml | Dépendances d’application. |
src/main/resources/templates/ | Modèles Thymeleaf pour l’interface utilisateur. |
src/main/resources/application.yml | Configuration de la bibliothèque de démarrage d’application et microsoft Entra ID. |
src/main/java/com/microsoft/azuresamples/msal4j/msidentityspringbootwebapp/ | Ce répertoire contient le point d’entrée, le contrôleur et les classes de configuration principaux de l’application. |
.../MsIdentitySpringBootWebappApplication.java | Classe principale. |
.../SampleController.java | Contrôleur avec mappages de point de terminaison. |
.../SecurityConfig.java | Configuration de la sécurité : par exemple, les itinéraires nécessitent une authentification. |
.../Utilities.java | Classe utilitaire : par exemple, filtrer les revendications de jeton d’ID. |
CHANGELOG.md | Liste des modifications apportées à l’exemple. |
CONTRIBUTING.md | Instructions pour contribuer à l’exemple. |
LICENCE | Licence de l’exemple. |
Revendications de jeton d’ID
Pour extraire les détails du jeton, l’application utilise spring Security et OidcUser
l’objet AuthenticationPrincipal
dans un mappage de requête, comme illustré dans l’exemple suivant. Pour plus d’informations sur la façon dont cette application utilise les revendications de jeton d’ID, consultez l’exemple de contrôleur .
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
//...
@GetMapping(path = "/some_path")
public String tokenDetails(@AuthenticationPrincipal OidcUser principal) {
Map<String, Object> claims = principal.getIdToken().getClaims();
}
Traiter une revendication de groupe dans le jeton d’ID
La revendication de groupes du jeton inclut les noms des groupes auxquels l’utilisateur connecté est affecté, comme illustré dans l’exemple suivant :
{
...
"groups": [
"xyz-id-xyz",
"xyz-id-xyz",]
...
}
Un moyen courant d’accéder aux noms de groupe est documenté dans la section revendications de jeton d’ID.
Microsoft Entra ID Boot Starter v3.5 et versions ultérieures analyse automatiquement les revendications des groupes et ajoute chaque groupe à l’utilisateur Authorities
connecté. Cette configuration permet aux développeurs d’utiliser des groupes avec des annotations de condition Spring PrePost
à l’aide de la hasAuthority
méthode. Par exemple, vous trouverez les conditions suivantes @PreAuthorize
illustrées dans SampleController.java :
@GetMapping(path = "/admin_only")
@PreAuthorize("hasAuthority('enter-admin-group-id-here')")
public String adminOnly(Model model) {
// restrict to users who belong to AdminGroup
}
@GetMapping(path = "/regular_user")
@PreAuthorize("hasAnyAuthority('enter-user-group-id-here','enter-admin-group-id-here')")
public String regularUser(Model model) {
// restrict to users who belong to any of UserGroup or AdminGroup
}
Le code suivant obtient une liste complète des autorités pour un utilisateur donné :
@GetMapping(path = "/some_path")
public String tokenDetails(@AuthenticationPrincipal OidcUser principal) {
Collection<? extends GrantedAuthority> authorities = principal.getAuthorities();
}
Liens de connexion et de déconnexion
Pour la connexion, l’application effectue une demande au point de terminaison de connexion Azure Active Directory automatiquement configurée par la bibliothèque cliente Spring Boot Starter d’ID Microsoft Entra pour Java, comme illustré dans l’exemple suivant :
<a class="btn btn-success" href="/oauth2/authorization/azure">Sign In</a>
Pour la déconnexion, l’application effectue une requête POST au logout
point de terminaison, comme indiqué dans l’exemple suivant :
<form action="#" th:action="@{/logout}" method="post">
<input class="btn btn-warning" type="submit" value="Sign Out" />
</form>
Éléments d’interface utilisateur dépendant de l’authentification
L’application a une logique simple dans les pages de modèle d’interface utilisateur pour déterminer le contenu à afficher en fonction de l’authentification de l’utilisateur, comme illustré dans l’exemple suivant utilisant des balises Spring Security Thymeleaf :
<div sec:authorize="isAuthenticated()">
this content only shows to authenticated users
</div>
<div sec:authorize="isAnonymous()">
this content only shows to not-authenticated users
</div>
Protéger les itinéraires avec AADWebSecurityConfigurerAdapter
Par défaut, l’application protège les détails du jeton d’ID, les Administration uniquement et les pages Utilisateurs réguliers afin que seuls les utilisateurs connectés puissent y accéder. L’application configure ces itinéraires à l’aide de la app.protect.authenticated
propriété à partir du fichier application.yml . Pour configurer les exigences spécifiques de votre application, vous pouvez étendre AADWebSecurityConfigurationAdapter
dans l’une de vos classes. Pour obtenir un exemple, consultez la classe SecurityConfig de cette application, illustrée dans le code suivant :
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends AADWebSecurityConfigurerAdapter{
@Value( "${app.protect.authenticated}" )
private String[] protectedRoutes;
@Override
public void configure(HttpSecurity http) throws Exception {
// use required configuration form AADWebSecurityAdapter.configure:
super.configure(http);
// add custom configuration:
http.authorizeRequests()
.antMatchers(protectedRoutes).authenticated() // limit these pages to authenticated users (default: /token_details, /admin_only, /regular_user)
.antMatchers("/**").permitAll(); // allow all other routes.
}
}
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, 6 pour les applications monopage. Si un utilisateur est membre de plus de groupes que la limite de dépassement, l’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.
Microsoft Entra ID Boot Starter v3.5 et versions ultérieures analyse automatiquement les revendications des groupes et ajoute chaque groupe à l’utilisateur Authorities
connecté. Le démarrage gère automatiquement le scénario de dépassement de groupe.
Remarque
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é.
Créer le scénario de dépassement pour les tests
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 .
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 des autorisations User.Read et GroupMember.Read.All pour que la fonction getMemberGroups s’exécute correctement.
Important
Pour le scénario de dépassement, vérifiez que vous disposez Admin Consent
de l’étendue de GroupMember.Read.All
l’API Microsoft Graph pour les applications clientes et de service. Pour plus d’informations, consultez les étapes d’inscription de l’application plus haut dans cet article.
Mettre à jour l’inscription de l’application ID Microsoft Entra (java-spring-webapp-groups)
Pour mettre à jour l’inscription de l’application, procédez comme suit :
Revenez au portail Azure.
Dans le volet de navigation, sélectionnez Azure Active Directory, puis sélectionnez Inscriptions d’applications (préversion).
Dans l’écran résultant, sélectionnez l’application
java-spring-webapp-groups
.Dans la page d’inscription de l’application, sélectionnez Authentification dans le menu.
Dans la section URI de redirection, mettez à jour les URL de réponse pour qu’elles correspondent à l’URL du site de votre déploiement Azure , par exemple
https://java-spring-webapp-groups.azurewebsites.net/login/oauth2/code/
.
Important
Si votre application utilise un stockage en mémoire , Azure App Services fait tourner votre site web s’il est inactif et tous les enregistrements conservés par votre application sont vidés. En outre, si vous augmentez le nombre d’instances de votre site web, les requêtes sont distribuées entre les instances. Par conséquent, vos enregistrements d’applications ne sont pas identiques sur chaque instance.
Plus d’informations
- Plateforme d'identités Microsoft (Azure Active Directory pour les développeurs)
- Présentation de la bibliothèque d’authentification Microsoft (MSAL)
- Démarrage rapide : Inscrire une application à l’aide de la plateforme d’identités Microsoft
- Démarrage rapide : configurer une application cliente pour accéder aux API web.
- Présentation des expériences de consentement de l’application Microsoft Entra ID
- Comprendre le consentement de l’utilisateur et de l’administrateur
- Objets application et principal du service dans Azure Active Directory
- Clouds nationaux
- Exemples de code MSAL
Pour plus d’informations sur le fonctionnement des protocoles OAuth 2.0 dans ce scénario et d’autres scénarios, consultez Scénarios d’authentification pour Microsoft Entra ID.
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