クラス ActiveDirectoryLdapAuthenticationProvider

java.lang.ObjectSE
org.springframework.security.ldap.authentication.AbstractLdapAuthenticationProvider
org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider
実装されたすべてのインターフェース:
org.springframework.beans.factory.Awareorg.springframework.context.MessageSourceAwareAuthenticationProvider

public final class ActiveDirectoryLdapAuthenticationProvider extends AbstractLdapAuthenticationProvider
Active Directory 構成規則を使用する特殊な LDAP 認証プロバイダー。

Active Directory  userPrincipalName または username@domain 形式のカスタム searchFilter を使用して認証します。ユーザー名がまだドメイン名で終わっていない場合、userPrincipalName は、構成されたドメイン名を認証リクエストで提供されたユーザー名に追加することによって構築されます。ドメイン名が設定されていない場合、ユーザー名には常にドメイン名が含まれると想定されます。

ユーザー権限は、memberOf 属性に含まれるデータから取得されます。

Active Directory サブエラーコード

認証が失敗し、標準の LDAP 49 エラーコードが発生した場合、Active Directory はエラーメッセージ内に独自のサブエラーコードも提供します。これらは、認証が失敗した理由に関する追加のログ情報を提供するために使用されます。典型的な例は

  • 525 - ユーザーが見つかりません
  • 52e - 無効な資格情報
  • 530 - 現時点ではログオンが許可されていません
  • 532 - パスワードが期限切れです
  • 533 - アカウント無効
  • 701 - アカウントが期限切れ
  • 773 - ユーザーはパスワードをリセットする必要があります
  • 775 - アカウントがロックされました

convertSubErrorCodesToExceptions プロパティを true に設定すると、発生した例外を制御するためにコードも使用されます。

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

    • ActiveDirectoryLdapAuthenticationProvider

      public ActiveDirectoryLdapAuthenticationProvider(StringSE domain, StringSE url, StringSE rootDn)
      パラメーター:
      domain - ドメイン名 (null または空でも構いません)
      url - LDAP URL (または複数の URL)
      rootDn - ルート DN (null または空でも構いません)
    • ActiveDirectoryLdapAuthenticationProvider

      public ActiveDirectoryLdapAuthenticationProvider(StringSE domain, StringSE url)
      パラメーター:
      domain - ドメイン名 (null または空でも構いません)
      url - LDAP URL (または複数の URL)
  • メソッドの詳細

    • doAuthentication

      protected org.springframework.ldap.core.DirContextOperations doAuthentication(UsernamePasswordAuthenticationToken auth)
      次で指定:
      クラス AbstractLdapAuthenticationProviderdoAuthentication 
    • loadUserAuthorities

      protected CollectionSE<? extends GrantedAuthority> loadUserAuthorities(org.springframework.ldap.core.DirContextOperations userData, StringSE username, StringSE password)
      ユーザーの Active Directory エントリから取得した memberOf 属性の値からユーザー権限リストを作成します。
      次で指定:
      クラス AbstractLdapAuthenticationProviderloadUserAuthorities 
    • setConvertSubErrorCodesToExceptions

      public void setConvertSubErrorCodesToExceptions(boolean convertSubErrorCodesToExceptions)
      デフォルトでは、認証の失敗(LDAP エラー 49)は BadCredentialsException になります。

      このプロパティが true に設定されている場合、失敗したバインド試行からの例外メッセージは AD 固有のエラーコードについて解析され、CredentialsExpiredExceptionDisabledExceptionAccountExpiredException または LockedException は対応するコードについてスローされます。他のすべてのコードは、デフォルトの BadCredentialsException になります。

      パラメーター:
      convertSubErrorCodesToExceptions - AD エラーコードに基づいて例外を発生させる true
    • setSearchFilter

      public void setSearchFilter(StringSE searchFilter)
      認証されるユーザーを検索する LDAP フィルター文字列。{0} の出現箇所は username@domain に置き換えられます。{1} の出現箇所は、username のみに置き換えられます。

      デフォルトは: (&(objectClass=user)(userPrincipalName={0}))

      パラメーター:
      searchFilter - フィルター文字列
      導入:
      3.2.6
    • setContextEnvironmentProperties

      public void setContextEnvironmentProperties(MapSE<StringSE,ObjectSE> environment)
      カスタム環境プロパティを使用して、初期 LDAP コンテキストを作成できます。
      パラメーター:
      environment - LDAP コンテキストの作成時に使用する追加の環境パラメーター
    • setAuthoritiesPopulator

      public void setAuthoritiesPopulator(LdapAuthoritiesPopulator authoritiesPopulator)
      特定のユーザーが認証された後に権限を取得するための戦略を設定します。デフォルトのものとは異なるカスタム権限マッピングアルゴリズムが必要な場合は、これを調整することを検討してください。デフォルト値は DefaultActiveDirectoryAuthoritiesPopulator です。
      パラメーター:
      authoritiesPopulator - 権限の人口戦略
      導入:
      6.3