1

私のWebアプリケーションは事前認証方式を使用しています。リクエストがアプリケーションに到達するまでに、userPrincipalが正しく設定されています。Java EEコンテナのセキュリティを使用しておらず、ApacheWebサーバーで構成されたモジュールを使用していることはわかっています。

したがって、どの事前認証方法を使用すればよいかわかりません。理想的にRequestHeaderAuthenticationFilterは、ヘッダーではなくリクエストからuserPrincipalを読み取ることを除いて、同様のものが必要です。

これを実現するためのすぐに使えるメカニズムはありますか?

4

1 に答える 1

1

拡張してから登録するだけAbstractPreAuthenticatedProcessingFilterで、すべてがドキュメントに含まれています:

public class RequestPreAuthenticatedProcessingFilter
    extends AbstractPreAuthenticatedProcessingFilter {

  private static final String USER_PRINCIPAL_KEY = "";

  @Override
  protected Object getPreAuthenticatedPrincipal(final HttpServletRequest request) {
    return request.getAttribute(USER_PRINCIPAL_KEY);
  }

  @Override
  protected Object getPreAuthenticatedCredentials(final HttpServletRequest request) {
    return "N/A"; // or whatever you need
  }
}

およびsecurity-context.xml:

<security:http>
  <!-- Additional http configuration omitted -->
  <security:custom-filter position="PRE_AUTH_FILTER" ref="preAuthFilter" />
</security:http>

<bean id="preAuthFilter"
    class="com.example.RequestPreAuthenticatedProcessingFilter">
  <property name="authenticationManager" ref="authenticationManager">
</bean>
于 2012-09-05T22:27:41.453 に答える