ユーザーが特定の URI パターンにアクセスできない場合にログインフォームが表示されないように、Spring Security 構成で条件を作成することは可能ですか?
現在、次の構成があります:-
<security:http auto-config="true">
<security:form-login login-page="/" authentication-failure-url="/?login_error=1" default-target-url="/" always-use-default-target="true"/>
<security:logout logout-success-url="/"/>
<security:intercept-url pattern="/secure/**" access="ROLE_ADMIN,ROLE_USER"/>
<security:intercept-url pattern="/api/**" access="ROLE_WEBSERVICE"/>
<security:intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
</security:http>
これは私がSpring Securityに処理させたいものです:-
/secure/**
ユーザーがブラウザから適切にアクセスせずにヒットした場合、ログイン フォームが表示される必要があります。この構成は、この要件を満たしています。- ユーザーが適切なアクセスなしでヒットした場合
/api/**
、ログイン フォームを表示する代わりに 403 エラーをスローします。その理由は、ユーザーがプログラムで JavaScript から、または curl を使用して Web サービスを呼び出す可能性があり、応答でログイン フォームの HTML ソース コードを返す意味がないためです。 - Use は、他のWeb サービス
/api/login
を使用する前に、自分自身を認証するために呼び出します。/api
Spring Security を使用してこの Web アプリを構築してきましたが、問題なく動作しています。ただし、現在、Web サービスを介していくつかの機能を公開できるようにする必要があり、Spring Security を使用して Web アプリと Web サービスの両方を保護するのに苦労しています。
どんな提案でも大歓迎です。ありがとう。