インターフェース Authentication

すべてのスーパーインターフェース:
PrincipalSE, SerializableSE
すべての既知の実装クラス:
AbstractAuthenticationToken, AbstractOAuth2TokenAuthenticationToken, AnonymousAuthenticationToken, BearerTokenAuthentication, BearerTokenAuthenticationToken, CasAssertionAuthenticationToken, CasAuthenticationToken, CasServiceTicketAuthenticationToken, DPoPAuthenticationToken, JaasAuthenticationToken, JwtAuthenticationToken, KerberosServiceRequestToken, KerberosUsernamePasswordAuthenticationToken, OAuth2AccessTokenAuthenticationToken, OAuth2AuthenticationToken, OAuth2AuthorizationCodeAuthenticationToken, OAuth2AuthorizationCodeAuthenticationToken, OAuth2AuthorizationCodeRequestAuthenticationToken, OAuth2AuthorizationConsentAuthenticationToken, OAuth2AuthorizationGrantAuthenticationToken, OAuth2ClientAuthenticationToken, OAuth2ClientCredentialsAuthenticationToken, OAuth2ClientRegistrationAuthenticationToken, OAuth2DeviceAuthorizationConsentAuthenticationToken, OAuth2DeviceAuthorizationRequestAuthenticationToken, OAuth2DeviceCodeAuthenticationToken, OAuth2DeviceVerificationAuthenticationToken, OAuth2LoginAuthenticationToken, OAuth2PushedAuthorizationRequestAuthenticationToken, OAuth2RefreshTokenAuthenticationToken, OAuth2TokenExchangeAuthenticationToken, OAuth2TokenExchangeCompositeAuthenticationToken, OAuth2TokenIntrospectionAuthenticationToken, OAuth2TokenRevocationAuthenticationToken, OidcClientRegistrationAuthenticationToken, OidcLogoutAuthenticationToken, OidcUserInfoAuthenticationToken, OneTimeTokenAuthentication, OneTimeTokenAuthenticationToken, PreAuthenticatedAuthenticationToken, RememberMeAuthenticationToken, RunAsUserToken, Saml2AssertionAuthentication, Saml2Authentication, Saml2AuthenticationToken, TestingAuthenticationToken, UsernamePasswordAuthenticationToken, WebAuthnAuthentication, WebAuthnAuthenticationRequestToken

public interface Authentication extends PrincipalSE, SerializableSE
リクエストが AuthenticationManager.authenticate(Authentication) メソッドによって処理された後の認証リクエストまたは認証済みプリンシパルのトークンを表します。

リクエストが認証されると、通常、認証は、使用されている認証メカニズムによって SecurityContextHolder によって管理されるスレッドローカルの SecurityContext に保存されます。Spring Security の認証メカニズムのいずれかを使用せずに、認証インスタンスを作成し、コードを使用することにより、明示的な認証を実現できます。

SecurityContext context = SecurityContextHolder.createEmptyContext();
context.setAuthentication(anAuthentication);
SecurityContextHolder.setContext(context);
Authentication authenticated プロパティが true に設定されていない限り、セキュリティインターセプター(メソッドまたは Web 呼び出し)によって認証されます。それに遭遇します。

ほとんどの場合、フレームワークはセキュリティコンテキストと認証オブジェクトの管理を透過的に行います。

  • 方法の詳細

    • getAuthorities

      CollectionSE<? extends GrantedAuthority> getAuthorities()
      プリンシパルが許可されたことを権限に示すために、AuthenticationManager によって設定されます。信頼できる AuthenticationManager によって設定されていない限り、クラスはこの値が有効であることに依存してはならないことに注意してください。

      実装では、返されたコレクション配列への変更が認証オブジェクトの状態に影響を与えないようにするか、変更不可能なインスタンスを使用する必要があります。

      戻り値:
      プリンシパルに付与された権限、またはトークンが認証されていない場合は空のコレクション。非 null。
    • getCredentials

      @Nullable ObjectSE getCredentials()
      プリンシパルが正しいことを証明する資格情報。これは通常パスワードですが、AuthenticationManager に関連するものであれば何でもかまいません。呼び出し元は資格情報を入力する必要があります。
      戻り値:
      Principal の身元を証明する資格情報
    • getDetails

      @Nullable ObjectSE getDetails()
      認証リクエストに関する追加の詳細を保存します。これらは、IP アドレス、証明書のシリアル番号などです。
      戻り値:
      認証リクエストに関する追加の詳細、または使用しない場合は null 
    • getPrincipal

      @Nullable ObjectSE getPrincipal()
      認証されるプリンシパルの ID。ユーザー名とパスワードを使用した認証リクエストの場合、これはユーザー名になります。呼び出し元は、認証リクエストのプリンシパルを設定することが期待されています。

      多くの場合、 AuthenticationManager 実装は、アプリケーションが使用するプリンシパルとして、より豊富な情報を含む Authentication を返します。認証プロバイダーの多くは、UserDetails オブジェクトをプリンシパルとして作成します。

      戻り値:
      認証される Principal または認証後の認証されたプリンシパル。
    • isAuthenticated

      boolean isAuthenticated()
      認証トークンを AuthenticationManager に提示する必要があるかどうかを AbstractSecurityInterceptor に示すために使用されます。通常、AuthenticationManager (または、より頻繁には、その AuthenticationProvider の 1 つ)は、認証が成功した後、不変の認証トークンを返します。この場合、トークンは true をこのメソッドに安全に返すことができます。true を返すとパフォーマンスが向上します。リクエストごとに AuthenticationManager を呼び出す必要がなくなるためです。

      セキュリティ上の理由から、このインターフェースの実装は、不変であるか、元の作成以降プロパティが変更されていないことを保証する方法がない限り、このメソッドから true を返すことに十分注意する必要があります。

      戻り値:
      トークンが認証され、AbstractSecurityInterceptor が再認証のために再度 AuthenticationManager にトークンを提示する必要がない場合は true。
    • setAuthenticated

      void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentExceptionSE
      詳細については、isAuthenticated() を参照してください。

      実装では、このメソッドが false パラメーターで呼び出されることをに許可する必要があります。これは、認証トークンを信頼しないように指定するためにさまざまなクラスで使用されるためです。実装が true パラメーター (認証トークンが信頼されていることを示します - 潜在的なセキュリティリスク) を使用した呼び出しを拒否したい場合、実装は IllegalArgumentExceptionSE をスローする必要があります。

      パラメーター:
      isAuthenticated - トークンを信頼する必要がある場合は true (例外が発生する可能性があります)、トークンを信頼しない場合は false 
      例外:
      IllegalArgumentExceptionSE - 実装が不変であるか、isAuthenticated() への独自の代替アプローチを実装しているため、認証トークンを(引数として true を渡すことにより)信頼しようとする試みが拒否された場合
    • toBuilder

      default Authentication.Builder<?> toBuilder()
      このインスタンスに基づいて Authentication.Builder を返します。デフォルトでは、SimpleAuthentication を構築するビルダーを返します。

      default 方式ではありますが、すべての Authentication 実装でこれを実装する必要があります。これは、Authentication.Builder.build() が呼び出された際に Authentication 型が保持されることを保証するためです。これは、認証実装にカスタムフィールドが含まれている場合に特に重要です。

      アプリケーションは Authentication インターフェースにコード化することが推奨されており、カスタム情報は多くの場合 getPrincipal() 値に含まれているため、これは厳密には必要ではありません。

      戻り値:
      このインスタンスに基づいて新しい Authentication を構築するための Authentication.Builder
      導入:
      7.0