クラス RequestHeaderAuthenticationFilter

java.lang.ObjectSE
org.springframework.web.filter.GenericFilterBean
org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter
org.springframework.security.web.authentication.preauth.RequestHeaderAuthenticationFilter
実装されたすべてのインターフェース:
jakarta.servlet.Filterorg.springframework.beans.factory.Awareorg.springframework.beans.factory.BeanNameAwareorg.springframework.beans.factory.DisposableBeanorg.springframework.beans.factory.InitializingBeanorg.springframework.context.ApplicationEventPublisherAwareorg.springframework.context.EnvironmentAwareorg.springframework.core.env.EnvironmentCapableorg.springframework.web.context.ServletContextAware

public class RequestHeaderAuthenticationFilter extends AbstractPreAuthenticatedProcessingFilter
CA Siteminder などのシステムで使用するために、リクエストヘッダーからユーザー名を取得する単純な事前認証済みフィルター。

ほとんどの事前認証シナリオと同様に、このフィルターは認証を一切行わないため、外部認証システムを正しくセットアップすることが不可欠です。すべての保護は外部から提供されると想定されており、このフィルターが構成に不適切に含まれている場合、正しいヘッダー名を設定するだけでユーザーの身元を推測することができます。これはまた、一般的にフォームログインなどの他の Spring Security 認証メカニズムと組み合わせて使用すべきではないことを意味します。これは、外部システムをバイパスする手段があり、危険を伴うためです。

プロパティ principalRequestHeader は、ユーザー名を含むリクエストヘッダーの名前です。Siteminder との互換性のため、デフォルトは "SM_USER" です。

リクエストからヘッダーが欠落している場合、getPreAuthenticatedPrincipal は例外をスローします。exceptionIfHeaderMissing プロパティを設定することにより、この動作をオーバーライドできます。

導入:
2.0
  • コンストラクターの詳細

    • RequestHeaderAuthenticationFilter

      public RequestHeaderAuthenticationFilter()
  • メソッドの詳細

    • getPreAuthenticatedPrincipal

      protected ObjectSE getPreAuthenticatedPrincipal(jakarta.servlet.http.HttpServletRequest request)
      リクエストから principalRequestHeader によって指定されたヘッダーを読み取り、返します。
      次で指定:
      クラス AbstractPreAuthenticatedProcessingFiltergetPreAuthenticatedPrincipal 
      例外:
      PreAuthenticatedCredentialsNotFoundException - ヘッダーが欠落しており、exceptionIfHeaderMissing が true に設定されている場合
    • getPreAuthenticatedCredentials

      protected ObjectSE getPreAuthenticatedCredentials(jakarta.servlet.http.HttpServletRequest request)
      通常、資格情報は適用されませんが、credentialsRequestHeader が設定されている場合、これが読み取られて資格情報の値として使用されます。それ以外の場合は、ダミー値が使用されます。
      次で指定:
      クラス AbstractPreAuthenticatedProcessingFiltergetPreAuthenticatedCredentials 
    • setPrincipalRequestHeader

      public void setPrincipalRequestHeader(StringSE principalRequestHeader)
    • setCredentialsRequestHeader

      public void setCredentialsRequestHeader(StringSE credentialsRequestHeader)
    • setExceptionIfHeaderMissing

      public void setExceptionIfHeaderMissing(boolean exceptionIfHeaderMissing)
      プリンシパルヘッダーがない場合に例外を発生させるかどうかを定義します。デフォルトは true です。
      パラメーター:
      exceptionIfHeaderMissing - false に設定すると、デフォルトの動作が上書きされ、ヘッダーが見つからない場合にリクエストを続行できます。