に従って、基本認証とフォームベース認証を使用して spring-security を構成しauto-config='true'
ました。
/api/**
下のエンドポイントでフォーム ベースのセキュリティを使用しないようにしたいと考えています。外部の他のエンドポイントで/api/**
は、フォーム ベースのログインを使用する必要があります。401
で資格情報を提供しなかったこれらのエンドポイントへの呼び出しに対して、応答が送信されることを希望します/api/**
。
更新: 以下の Luke Taylor のコメントのおかげで、次の解決策を思いつきました。
注: この手法は、spring-security 3.1 以降でのみ適用できます。
最初に私は選び出し/api/**
ます。セッションを作成することはありませんが、利用可能な場合は使用します。これは によって処理されcreate-session="never"
、 を使用し<session-management/>
ます。
<http pattern="/api/**" create-session="never" use-expressions="true">
<http-basic />
<session-management />
<intercept-url pattern="/api/**" access="hasRole('API_ACCESS')"/>
</http>
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/" access="permitAll"/>
<intercept-url pattern="/**" access="isAuthenticated()"/>
</http>