web-dev-qa-db-fra.com

Quelle est l'utilisation de @EnableWebSecurity au printemps

Selon documentation printanière

Ajouter cette annotation à un @Configuration La classe doit avoir la configuration Spring Security définie dans n’importe quelle WebSecurityConfigurer ou plus probablement en étendant la classe de base WebSecurityConfigurerAdapter et en surchargeant des méthodes individuelles:

Ou comme ceci @EnableWebSecurity décrit, est utilisé pour activer SpringSecurity dans notre projet.

Mais ma question est que même si je n'annote aucune de mes classes avec @EnableWebSecurity toujours l'application demandant le nom d'utilisateur et le mot de passe (comportement par défaut)

Je reçois donc le même comportement avec @EnableWebSecurity Et sans @EnableWebSecurity.

Quelqu'un peut-il s'il vous plaît expliquer en quoi consiste exactement cette annotation?

24
Mehraj Malik

Le @EnableWebSecurity est une annotation de marqueur. Cela permet au printemps de trouver (c'est un @Configuration et donc, @Component) et applique automatiquement la classe au global WebSecurity.

Si je n'annote aucun de mes cours avec @EnableWebSecurity toujours l'application demandant le nom d'utilisateur et le mot de passe.

Oui, c'est le comportement par défaut. Si vous avez regardé votre chemin de classe, vous pourriez trouver d'autres classes marquées avec cette annotation (dépend de vos dépendances):

  • SpringBootWebSecurityConfiguration;
  • FallbackWebSecurityAutoConfiguration;
  • WebMvcSecurityConfiguration.

Examinez-les attentivement, désactivez la configuration requise ou annulez son comportement.

24
Andrew Tobilko

Le Guide de référence du démarrage du printemps explique bien ce sujet. si peut rechercher avec @EnableWebSecurity:

Pour désactiver complètement la configuration de sécurité des applications Web par défaut, vous pouvez ajouter un bean avec @EnableWebSecurity _ (cela ne désactive pas la configuration du gestionnaire d’authentification ni la sécurité de l’actionneur). Pour le personnaliser, vous utilisez normalement des propriétés externes et des beans de type WebSecurityConfigurerAdapter (par exemple, pour ajouter une connexion par formulaire).

...

Si vous ajoutez @EnableWebSecurity et désactivez également la sécurité de l'actionneur, vous obtiendrez la connexion par défaut basée sur un formulaire pour l'ensemble de l'application, sauf si vous ajoutez un WebSecurityConfigurerAdapter personnalisé.

...

Si vous définissez un @Configuration avec @EnableWebSecurity n’importe où dans votre application, les paramètres de sécurité par défaut de la Webapp sont désactivés dans Spring Boot (mais la sécurité de l’actionneur est activée). Pour modifier les valeurs par défaut, essayez de définir les propriétés dans security.* (voir SecurityProperties pour plus de détails sur les paramètres disponibles) et la section SECURITE des propriétés de l'application commune.

Apparemment, il s’agit de désactiver la configuration de sécurité par défaut des applications Web et d’ajouter la vôtre.

13
Sanghyun Lee