クラス DefaultLdapAuthoritiesPopulator

java.lang.ObjectSE
org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator
実装されたすべてのインターフェース:
LdapAuthoritiesPopulator
既知の直属サブクラス
NestedLdapAuthoritiesPopulator

public class DefaultLdapAuthoritiesPopulator extends ObjectSE implements LdapAuthoritiesPopulator
ディレクトリからユーザーロール情報を取得するためのデフォルトの戦略。

ユーザーがメンバーになっている「グループ」の検索を実行して、ロールを取得します。

典型的なグループ検索シナリオでは、各グループ / ロールが groupOfNames (または groupOfUniqueNames )LDAP objectClass を使用して指定され、ユーザーの DN が member (または uniqueMember )属性を使用して、そのロールを割り当てる必要があることを示します。次の LDIF サンプルには、DN ou = groups、dc = springframework、dc = org に保存されたグループと、"ben" および "luke" をメンバーとする "developers" というグループがあります。

 dn: ou=groups,dc=springframework,dc=org
 objectClass: top
 objectClass: organizationalUnit
 ou: groups

 dn: cn=developers,ou=groups,dc=springframework,dc=org
 objectClass: groupOfNames
 objectClass: top
 cn: developers
 description: Spring Security Developers
 member: uid=ben,ou=people,dc=springframework,dc=org
 member: uid=luke,ou=people,dc=springframework,dc=org
 ou: developer
 

グループ検索は、 groupSearchBase プロパティで指定された DN 内で実行されます。このプロパティは、その ContextSource のルート DN に対して相対的でなければなりません。検索ベースが null の場合、グループ検索は無効になります。検索で使用されるフィルターは、 groupSearchFilter プロパティによって定義され、フィルター引数 {0} はユーザーの完全な DN です。オプションで、ユーザー名に置き換えられるパラメーター {1} を使用することもできます。 groupRoleAttribute プロパティを設定することにより、ロール名を定義する属性を指定することもできます(デフォルトは "cn" です)。

以下の構成は、上記のスキーマを使用してグループ検索を実行する方法を示しています。

 <bean id="ldapAuthoritiesPopulator"
       class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
   <constructor-arg ref="contextSource"/>
   <constructor-arg value="ou=groups"/>
   <property name="groupRoleAttribute" value="ou"/>
 <!-- the following properties are shown with their default values -->
   <property name="searchSubtree" value="false"/>
   <property name="rolePrefix" value="ROLE_"/>
   <property name="convertToUpperCase" value="true"/>
 </bean>
 
ユーザー "uid=ben,ou=people,dc=springframework,dc=org" のロールを検索すると、付与された単一の権限 "ROLE_DEVELOPER" が返されます。

デフォルトでは、単一レベルの検索が実行されます。 searchSubTree プロパティを true に設定すると、 groupSearchBase のサブツリー全体の検索が有効になります。

  • コンストラクターの詳細

    • DefaultLdapAuthoritiesPopulator

      public DefaultLdapAuthoritiesPopulator(org.springframework.ldap.core.ContextSource contextSource, StringSE groupSearchBase)
      グループ検索シナリオのコンストラクター。 userRoleAttributes は引き続きプロパティとして設定できます。
      パラメーター:
      contextSource - ユーザーロールの検索に使用されるコンテキストを提供します。
      groupSearchBase - これが空の文字列の場合、検索はコンテキストファクトリのルート DN から実行されます。null の場合、検索は実行されません。
  • メソッドの詳細

    • getAdditionalRoles

      protected SetSE<GrantedAuthority> getAdditionalRoles(org.springframework.ldap.core.DirContextOperations user, StringSE username)
      特定のユーザーの追加のロールを取得する必要がある場合は、このメソッドをオーバーライドする必要があります(このクラスによって実装される標準検索から取得したロールに加えて)。
      パラメーター:
      user - ロールが必要なユーザーを表すコンテキスト
      戻り値:
      グループ検索によって返されたロールとマージされる追加のロール
    • getGrantedAuthorities

      public final CollectionSE<GrantedAuthority> getGrantedAuthorities(org.springframework.ldap.core.DirContextOperations user, StringSE username)
      提供された LdapUserDetails オブジェクトによって表されるディレクトリエントリのユーザーの権限を取得します。
      次で指定:
      インターフェース LdapAuthoritiesPopulatorgetGrantedAuthorities 
      パラメーター:
      user - 権限を持つユーザーが必要です
      戻り値:
      ユーザーに付与されたロールのセット。
    • getGroupMembershipRoles

      public SetSE<GrantedAuthority> getGroupMembershipRoles(StringSE userDn, StringSE username)
    • getContextSource

      protected org.springframework.ldap.core.ContextSource getContextSource()
    • getGroupSearchBase

      protected StringSE getGroupSearchBase()
    • setConvertToUpperCase

      public void setConvertToUpperCase(boolean convertToUpperCase)
      ロールを大文字に変換します
    • setDefaultRole

      public void setDefaultRole(StringSE defaultRole)
      すべてのユーザーに割り当てられるデフォルトのロール。
      パラメーター:
      defaultRole - 目的のプレフィックスを含むロール名。
    • setGroupRoleAttribute

      public void setGroupRoleAttribute(StringSE groupRoleAttribute)
    • setGroupSearchFilter

      public void setGroupSearchFilter(StringSE groupSearchFilter)
    • setRolePrefix

      public void setRolePrefix(StringSE rolePrefix)
      ディレクトリからロードされた値の前に付加されるプレフィックスを設定します。 RoleVoter との互換性のため、デフォルトは "ROLE_" です。
    • setSearchSubtree

      public void setSearchSubtree(boolean searchSubtree)
      true に設定すると、サブツリースコープ検索が実行されます。false の場合、単一レベルの検索が使用されます。
      パラメーター:
      searchSubtree - true に設定すると、 groupSearchBase のツリー全体の検索が可能になります。
    • setIgnorePartialResultException

      public void setIgnorePartialResultException(boolean ignore)
      基になるテンプレートに対応するプロパティを設定し、Active Directory に関する特定の課題を回避します。
      関連事項:
      • LdapTemplate.setIgnoreNameNotFoundException(boolean)
    • setAuthorityMapper

      public void setAuthorityMapper(FunctionSE<MapSE<StringSE,ListSE<StringSE>>,GrantedAuthority> authorityMapper)
      コンテキストレコードを指定して GrantedAuthority のインスタンスを作成するために使用されるマッピング関数を設定します。
      パラメーター:
      authorityMapper - マッピング関数
    • getLdapTemplate

      protected SpringSecurityLdapTemplate getLdapTemplate()
      現在の LDAP テンプレートを返します。これを継承するクラスが使用されるテンプレートをオーバーライドできるように利用可能なメソッド
      戻り値:
      LDAP テンプレート
      関連事項:
    • getGroupRoleAttribute

      protected final StringSE getGroupRoleAttribute()
      これを継承するクラスがオーバーライドできるように、使用可能なロール名メソッドにマップされる LDAP 属性の属性名を返します
      戻り値:
      ロールマッピングに使用される属性名
      関連事項:
    • getGroupSearchFilter

      protected final StringSE getGroupSearchFilter()
      この populator メソッドに設定された検索フィルターを返します。これにより、これを継承するクラスがオーバーライドできます。
      戻り値:
      検索フィルター
      関連事項:
    • getRolePrefix

      protected final StringSE getRolePrefix()
      この populator メソッドで使用されるロールプレフィックスを返します。これにより、これを継承するクラスがオーバーライドできます。
      戻り値:
      ロールのプレフィックス
      関連事項:
    • isConvertToUpperCase

      protected final boolean isConvertToUpperCase()
      ロール名が使用可能な大文字のメソッドに変換され、これを継承するクラスがオーバーライドできる場合に true を返します。
      戻り値:
      ロール名が大文字に変換される場合は true。
      関連事項: