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?
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 PreAuthorize
PostAuthorize
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