Spring セキュリティが動的 URL 変更へのアクセスをブロックできるようにしてほしい
http://domain.com/ /** shareURL は ID です。問題は、shareID 1 でアクセスすると、プログラムはログインする必要があることを通知しますが (すべて OK)、ログインすると shareID を実行しようとします。 2、プログラムは私のセッションではないため、再ログインするように再度指示するはずですが、今..プログラムはこの共有IDへのアクセスを許可しています。
ログインせずにそのユーザーが共有IDを変更するのをブロックするにはどうすればよいですか?
特定の共有IDにパスワードが必要ない場合、スプリングセキュリティは認証をバイパスしてログインページを回避し、偽の認証を挿入するため、事前認証を使用しています。これなら一番の問題
ShareID 1 (パスワード不要) ShareID 2 (特定のパスワードが必要)
共有 1 (パスワードなしの自動ログイン) でログインすると、共有 ID 2 (ログインしているため) にアクセスできますが、それを行うべきではありません。
Spring-security.xml(問題の設定のみ)
-->
<!-- Share Authentication Manager-->
<beans:bean id="shareUserService" class="com.segator.ownline.service.impl.OwnlineShareSecurityService" />
<beans:bean id="preAuthenticationProvider" class="org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationProvider">
<beans:property name="preAuthenticatedUserDetailsService"
ref="shareUserService" />
</beans:bean>
<beans:bean id="preAuthFilter"
class="com.segator.ownline.controller.config.ShareLinkAuthenticationFilter">
<beans:property name="authenticationManager" ref="appControlAuthenticationManager" />
</beans:bean>
<authentication-manager alias="appControlAuthenticationManager" id="shareAuth">
<authentication-provider ref="preAuthenticationProvider" />
</authentication-manager>
ユーザーがshareIDを変更した場合にログインが必要であることを春のセキュリティに伝える追加の構成が必要だと思います。たとえば、interceptor-urlの例に適切なメソッドを実装できる場合
intercept-url pattern="/share/**" access="hasRole('ROLE_SHARE') && sameShareIDLogged()"
私の悪い英語で申し訳ありませんが、私は今のところ勉強しています。