@Commande(SecurityProperties.ACCESS_OVERRIDE_ORDER) vs ManagementServerProperties.ACCESS_OVERRIDE_ORDER au Printemps de Sécurité
Question1: Au Printemps de Sécurité, quelle est exactement la fonction
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
Printemps États de Documentation ci-dessous, mais je ne suis pas sûr de comprendre clairement
Pour remplacer les règles d'accès sans changer les autres configurée automatiquement dispose d'ajouter un @Bean de type WebSecurityConfigurerAdapter avec
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
.
La commande des diverses fonctions de sécurité dans le Ressort de Sécurité sont en tant que ci-dessous selon ma compréhension (LowestValue c'est à dire la Plus haute Priorité à la Valeur la Plus élevée c'est à dire la plus basse Priorité)
Ordered.HIGHEST_PRECEDENCE
= -2^31-1- WebSecurityConfigurerAdapter = 100 (Basé sur @Commande(100) mentionné dans les Docs)
Access_Override_Order = Basic_Auth_Order -2
pour Propriétés de SécuritéAccess_Override_Order = Basic_Auth_Order -1
pour ManagementServerProperties
Basic_Auth_Order-2
= 2^31-7
Basic_Auth_Order = Ordered.Lowest_Precendence -5 = 2^31-5
Ordered.LOWEST_PRECEDENCE = 2^31
Question2
En fonction de l'organisation de divers dispositifs de sécurité ci-dessus, Si je veux remplacer les règles par défaut pour la Gestion des points de terminaison et le Reste de l'application, dois-je utiliser
- SecurityPropertiesACCESS_OVERRIDe_order ou
- ManagementServerProperties ACCESS_OVERRIDE_ORDER ?
Je suis actuellement en utilisant SecurityProperties ACCESS_OVERRIDE_ORDER
mais basé sur la suggestion ici pour obtenir de l'ACTIONNEUR de travail que j'ai besoin d'activer ManagementServerProperties ACCESS_OVERRIDE_ORDER
. Lequel dois-je remplacer si je veux à la fois de travail ?
Grâce.
Vous devez vous connecter pour publier un commentaire.
T1. Question1: Au Printemps de Sécurité, exactement ce que fait l'annotation
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
faire?Ce qu'il fait est bien expliqué dans la documentation que vous avez cité.
Mais alors
WebSecurityConfigurerAdapter
, qui a@Order(100)
, est prioritaire.Pas.
Vous devez être prudent au sujet de cette partie
autoconfigured features
. À l'aide de@EnableAutoConfiguration
qui est une partie de@SpringBootApplication
, beaucoup de choses sont auto-configuré et100
n'est pas un auto-configuré valeur, mais une valeur codée en dur sur leWebSecurityConfigurerAdapter
classe.Vous pouvez trouver l'ordre des valeurs utilisées pour l'auto-configuration pour le Printemps de Sécurité dans
SecurityProperties
classe et vous pouvez voir que la valeur deACCESS_OVERRIDE_ORDER
est le plus bas, ce qui signifie qu'il prend la priorité la plus élevée.Où sont-ils auto-confitured?
Vous pouvez trouver que
@Order(SecurityProperties.BASIC_AUTH_ORDER)
est utilisé dansSpringBootWebSecurityConfiguration
classe.Alors quand est-ce que l'annotation
@Order(100)
deWebSecurityConfigurerAdapter
utilisé?Par exemple, si vous désactivez la fonction d'auto-configuration en ajoutant
@EnableWebSecurity
, la valeur devrait être utilisé. Comme la valeur100
prend trop haute priorité, il serait mieux de mettre@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
annotation dans votre classe personnalisée dans le cas.T2. En fonction de l'organisation de divers dispositifs de sécurité ci-dessus, Si je veux remplacer les règles par défaut pour la Gestion des points de terminaison et le Reste de l'application, que dois-je utiliser
Utilisation
ManagementServerProperties ACCESS_OVERRIDE_ORDER
.Il est prioritaire, donc vous devez les utiliser si vous souhaitez remplacer les règles par défaut pour tous les points de fin. Vous pouvez voir comment les valeurs sont définies si vous ouvrez le
ManagementServerProperties
classe.Dans
SecurityProperties
Dans
ManagementServerProperties
Dans le commentaire,
39
signifie21474839
, j'ai omis les 6 premiers chiffres pour des raisons de lisibilité.SecurityProperties plus définit la ACCESS_OVERRIDE_ORDER constante pour le @Afin d'annotation. Toutefois, le Printemps de Démarrage n'est plus définit les détails de sécurité, si l'application n', donc nous n'avons pas besoin de l' @Afin d'annotation sur la sécurité @classe de Configuration et peut être retiré.