web-dev-qa-db-ja.com

Springのセキュリティ-匿名アクセスを許可する

Spring-bootアプリにOauth2を実装しました。私のsecurity-context.xmlには、次の行があります-

<sec:intercept-url pattern="/trusted/**" access="isAnonymous()" />
<sec:intercept-url pattern="/**" access="isFullyAuthenticated()" />

/ trustedの下にあるすべてのものを認証なしで使用できるようにしたい。ただし、/ trustedリソースにアクセスしようとすると、認証が求められます(これらはRESTfulリソースです)。

私は何か他のものを逃しましたか?

[編集:]「提供された」Tomcatインスタンスでこのアプリを実行しています。

17
NRJ

信頼できるインターセプト式のaccess属性を置き換えるだけで機能します。

<sec:intercept-url pattern="/trusted/**" filters="none" />
<sec:intercept-url pattern="/**" access="isFullyAuthenticated()" />

Spring Security 3.1はfiltersを非推奨にしていますが、同じ効果を得るにはhttpタグを使用する必要があります。

<http pattern="/trusted/**" security="none"/>

<http auto-config='true'>
  <intercept-url pattern="/**" access="isFullyAuthenticated()" />
  <form-login login-page='/login.jsp'/>
</http>

これについて詳しくは、こちらをご覧ください

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

ROLE_GUESTのような役割を定義し、上記のコードが何をするかのように言及することができます。すべての匿名メンバーがROLE_GUESTのURLパターンにアクセスできます

2
MS Ibrahim

設定が間違っています。次に、何が起こっているのかをイメージし、/trusted/**の下にあるすべてへの匿名アクセスを許可するようにSpringセキュリティに指示していますが、/**の下にあるすべての匿名アクセスを制限するようにもう一度指示しています。アプリケーションは明らかに/trusted/**へのアクセスも制限します。

設定を次のように変更する必要があります:

<sec:intercept-url pattern="/trusted/**" access="isAnonymous()" />
<sec:intercept-url pattern="/secure/**" access="isFullyAuthenticated()" />

そしてそれは動作します。

0