web-dev-qa-db-fra.com

Sécurité printanière - permettant un accès anonyme

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".

14
Raj

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>

Vous pouvez lire plus à ce sujet ici .

5
Daniel Cottone
<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

1
MS Ibrahim

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.

0
Paulius Matulionis