web-dev-qa-db-fra.com

@EnableGlobalMethodSecurity vs @EnableWebSecurity

Je développe une REST à l'aide de Spring 4. Je voudrais sécuriser certains points de terminaison à l'aide de Spring Security, mais d'après ce que j'ai lu, cela peut être fait avec _ @EnableGlobalMethodSecurity ou @EnableWebSecurity. Malheureusement, la documentation que j'ai trouvée pour ceux-ci n'explique pas clairement ce qu'ils font (ou comment ils se comparent). Si je veux sécuriser une API Spring REST avec authentification et autorisation basée sur les données et les relations déclarées dans une base de données relationnelle standard, quelle est la méthode recommandée pour y parvenir dans Spring 4?

33
Christopher

EnableWebSecurity fournira la configuration via HttpSecurity fournissant la configuration que vous pouvez trouver avec la balise <http></http> dans la configuration xml, il vous permet de configurer votre accès en fonction des modèles d'URL, de l'authentification points de terminaison, gestionnaires etc ...

EnableGlobalMethodSecurity fournit une sécurité AOP sur les méthodes, certaines des annotations qu'il activera sont PreAuthorizePostAuthorize et il prend également en charge JSR-25 . Il y a aussi plus de paramètres dans la configuration pour vous

Pour vos besoins, il vaut mieux mélanger les deux. Avec REST vous pouvez obtenir tout ce dont vous avez besoin uniquement avec @EnableWebSecurity, Puisque HttpSecurity#antMatchers(HttpMethod,String...) accepte les contrôles sur les méthodes Http

39
Joao Evangelista