J'ai implémenté Oauth2 dans mon application Spring-Boot. Dans mon security-context.xml, j'ai ces lignes -
<sec:intercept-url pattern="/trusted/**" access="isAnonymous()" />
<sec:intercept-url pattern="/**" access="isFullyAuthenticated()" />
Je veux que tout sous/digne de confiance soit disponible sans authentification. Cependant, je suis toujours invité à m'authentifier lorsque j'essaie d'accéder à des ressources/de confiance (ce sont des ressources RESTful).
Ai-je raté quelque chose d'autre?
[Edit:] J'utilise cette application avec une instance Tomcat "fournie".
Il vous suffit de remplacer l'attribut access
de l'expression d'interception sécurisée et cela devrait fonctionner:
<sec:intercept-url pattern="/trusted/**" filters="none" />
<sec:intercept-url pattern="/**" access="isFullyAuthenticated()" />
Cependant, depuis que Spring Security 3.1 est obsolète pour filters
, vous devez utiliser les balises http
pour obtenir le même effet:
<http pattern="/trusted/**" security="none"/>
<http auto-config='true'>
<intercept-url pattern="/**" access="isFullyAuthenticated()" />
<form-login login-page='/login.jsp'/>
</http>
<http>
<intercept-url pattern="/trusted/**" access="ROLE_USER,ROLE_GUEST" />
<intercept-url pattern="/messagePost.htm*" access="ROLE_USER" />
<intercept-url pattern="/messageDelete.htm*" access="ROLE_ADMIN" />
<anonymous username="guest" granted-authority="ROLE_GUEST" />
<remember-me />
</http>
<anonymous username="guest" granted-authority="ROLE_GUEST" />
Vous pouvez définir un rôle tel que ROLE_GUEST et mentionner de la même manière que le code ci-dessus. Tout membre anonyme peut accéder au modèle d'URL sous ROLE_GUEST
Votre configuration est fausse. Maintenant, image, vous dites à la sécurité de Spring d'autoriser l'accès anonyme à tout ce qui est sous /trusted/**
, ce qui est correct, mais vous lui redemandez de restreindre tous les accès anonymes sous /**
- qui représente tous les chemins de votre application, ce qui limite évidemment l'accès à /trusted/**
ainsi que.
Vous devez changer votre configuration en quelque chose comme ceci:
<sec:intercept-url pattern="/trusted/**" access="isAnonymous()" />
<sec:intercept-url pattern="/secure/**" access="isFullyAuthenticated()" />
et ça va marcher.