クラス DefaultLdapAuthoritiesPopulator

  • 実装されたすべてのインターフェース:
    LdapAuthoritiesPopulator
    既知の直属サブクラス
    NestedLdapAuthoritiesPopulator

    public class DefaultLdapAuthoritiesPopulator
    extends java.lang.Object
    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 内で実行されます。この 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​(org.springframework.ldap.core.ContextSource contextSource, java.lang.String groupSearchBase)
      グループ検索シナリオのコンストラクター。
    • メソッドのサマリー

      すべてのメソッド   インスタンスメソッド   具象メソッド  
      修飾子と型 メソッド 説明
      protected java.util.Set<GrantedAuthority>getAdditionalRoles​(org.springframework.ldap.core.DirContextOperations user, java.lang.String username)
      特定のユーザーの追加のロールを取得する必要がある場合は、このメソッドをオーバーライドする必要があります(このクラスによって実装される標準検索から取得したロールに加えて)。
      protected org.springframework.ldap.core.ContextSourcegetContextSource()
      java.util.Collection<GrantedAuthority>getGrantedAuthorities​(org.springframework.ldap.core.DirContextOperations user, java.lang.String username)
      提供された LdapUserDetails オブジェクトによって表されるディレクトリエントリのユーザーの権限を取得します。
      java.util.Set<GrantedAuthority>getGroupMembershipRoles​(java.lang.String userDn, java.lang.String username)
      protected java.lang.StringgetGroupRoleAttribute()
      これを継承するクラスがオーバーライドできるように、使用可能なロール名メソッドにマップされる LDAP 属性の属性名を返します
      protected java.lang.StringgetGroupSearchBase()
      protected java.lang.StringgetGroupSearchFilter()
      この populator メソッドに設定された検索フィルターを返します。これにより、これを継承するクラスがオーバーライドできます。
      protected SpringSecurityLdapTemplategetLdapTemplate()
      現在の LDAP テンプレートを返します。
      protected java.lang.StringgetRolePrefix()
      この populator メソッドで使用されるロールプレフィックスを返します。これにより、これを継承するクラスがオーバーライドできます。
      protected booleanisConvertToUpperCase()
      ロール名が使用可能な大文字のメソッドに変換され、これを継承するクラスがオーバーライドできる場合に true を返します。
      voidsetAuthorityMapper​(java.util.function.Function<java.util.Map<java.lang.String,​java.util.List<java.lang.String>>,​GrantedAuthority> authorityMapper)
      コンテキストレコードを指定して GrantedAuthority のインスタンスを作成するために使用されるマッピング関数を設定します。
      voidsetConvertToUpperCase​(boolean convertToUpperCase)
      ロールを大文字に変換します
      voidsetDefaultRole​(java.lang.String defaultRole)
      すべてのユーザーに割り当てられるデフォルトのロール。
      voidsetGroupRoleAttribute​(java.lang.String groupRoleAttribute)
      voidsetGroupSearchFilter​(java.lang.String groupSearchFilter)
      voidsetIgnorePartialResultException​(boolean ignore)
      基になるテンプレートに対応するプロパティを設定し、Active Directory に関する特定の課題を回避します。
      voidsetRolePrefix​(java.lang.String rolePrefix)
      ディレクトリからロードされた値の前に付加されるプレフィックスを設定します。
      voidsetSearchSubtree​(boolean searchSubtree)
      true に設定すると、サブツリースコープ検索が実行されます。
      • クラス java.lang.Object から継承されたメソッド

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • コンストラクターの詳細

      • DefaultLdapAuthoritiesPopulator

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

      • getAdditionalRoles

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

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

        public java.util.Set<GrantedAuthority> getGroupMembershipRoles​(java.lang.String userDn,
                                                                       java.lang.String username)
      • getContextSource

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

        protected java.lang.String getGroupSearchBase()
      • setConvertToUpperCase

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

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

        public void setGroupRoleAttribute​(java.lang.String groupRoleAttribute)
      • setGroupSearchFilter

        public void setGroupSearchFilter​(java.lang.String groupSearchFilter)
      • setRolePrefix

        public void setRolePrefix​(java.lang.String 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​(java.util.function.Function<java.util.Map<java.lang.String,​java.util.List<java.lang.String>>,​GrantedAuthority> authorityMapper)
        コンテキストレコードを指定して GrantedAuthority のインスタンスを作成するために使用されるマッピング関数を設定します。
        パラメーター:
        authorityMapper - マッピング関数
      • getLdapTemplate

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

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

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

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

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