1

Jersey RESTfulアプリケーションの上にSpring Securityを使用して認証レイヤーを構築しています。Jersey アプリケーションは「バージョン管理された」API であり、Content-Type.

私の質問は、異なる API バージョンには異なる認証メカニズムがあるため、Spring Security でこれを処理する最良の方法は何ですか? AuthenticationFilter認証メカニズムごとに異なる必要がありますか? AuthenticationFilter各バージョン ( ) に適用する必要がある Spring Security レイヤーで知識を構築する必要がありContent-Typeますか?

ありがとう!

4

1 に答える 1

2

異なる API バージョンに対して異なるフィルタ チェーンを定義し、リクエストのヘッダーにRequestMatcher基づいて一致させるために a を使用できます。Content-Type

<bean id="apiV1Matcher" class="org.springframework.security.web.util.ELRequestMatcher">
    <constructor-arg value="hasHeader('Content-Type','<pattern for api v1>')"/>
</bean>

<bean id="apiV2Matcher" class="org.springframework.security.web.util.ELRequestMatcher">
    <constructor-arg value="hasHeader('Content-Type','<pattern for api v2>')"/>
</bean>

<security:http request-matcher-ref="apiV1Matcher" ...>
    <!-- config for api v1 requests -->
</security:http>

<security:http request-matcher-ref="apiV2Matcher" ...>
    <!-- config for api v2 requests -->
</security:http>

これにより重複が多すぎる場合は、ネームスペース構成を使用せず、可能であればフィルターチェーン間で Bean を共有してください。

于 2013-02-26T06:50:28.653 に答える