クラス DefaultLdapAuthoritiesPopulator
- 実装されたすべてのインターフェース:
LdapAuthoritiesPopulator
- 既知の直属サブクラス
NestedLdapAuthoritiesPopulator
ユーザーがメンバーになっている「グループ」の検索を実行して、ロールを取得します。
一般的なグループ検索シナリオでは、各グループ / ロールは 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, StringSE groupSearchBase) グループ検索シナリオのコンストラクター。メソッドのサマリー
修飾子と型メソッド説明protected SetSE<GrantedAuthority>
getAdditionalRoles
(org.springframework.ldap.core.DirContextOperations user, StringSE username) 特定のユーザーの追加のロールを取得する必要がある場合は、このメソッドをオーバーライドする必要があります(このクラスによって実装される標準検索から取得したロールに加えて)。protected org.springframework.ldap.core.ContextSource
final CollectionSE<GrantedAuthority>
getGrantedAuthorities
(org.springframework.ldap.core.DirContextOperations user, StringSE username) 提供された LdapUserDetails オブジェクトによって表されるディレクトリエントリのユーザーの権限を取得します。getGroupMembershipRoles
(StringSE userDn, StringSE username) protected final StringSE
これを継承するクラスがオーバーライドできるように、使用可能なロール名メソッドにマップされる LDAP 属性の属性名を返しますprotected StringSE
protected final StringSE
この populator メソッドに設定された検索フィルターを返します。これにより、これを継承するクラスがオーバーライドできます。protected SpringSecurityLdapTemplate
現在の LDAP テンプレートを返します。protected final StringSE
この populator メソッドで使用されるロールプレフィックスを返します。これにより、これを継承するクラスがオーバーライドできます。protected final boolean
ロール名が使用可能な大文字のメソッドに変換され、これを継承するクラスがオーバーライドできる場合に true を返します。void
setAuthorityMapper
(FunctionSE<MapSE<StringSE, ListSE<StringSE>>, GrantedAuthority> authorityMapper) コンテキストレコードを指定してGrantedAuthority
のインスタンスを作成するために使用されるマッピング関数を設定します。void
setConvertToUpperCase
(boolean convertToUpperCase) ロールを大文字に変換しますvoid
setDefaultRole
(StringSE defaultRole) すべてのユーザーに割り当てられるデフォルトのロール。void
setGroupRoleAttribute
(StringSE groupRoleAttribute) void
setGroupSearchFilter
(StringSE groupSearchFilter) void
setIgnorePartialResultException
(boolean ignore) 基になるテンプレートに対応するプロパティを設定し、Active Directory に関する特定の課題を回避します。void
setRolePrefix
(StringSE rolePrefix) ディレクトリからロードされた値の前に付加されるプレフィックスを設定します。void
setSearchSubtree
(boolean searchSubtree) true に設定すると、サブツリースコープ検索が実行されます。
コンストラクターの詳細
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 オブジェクトによって表されるディレクトリエントリのユーザーの権限を取得します。- 次で指定:
- インターフェース
LdapAuthoritiesPopulator
のgetGrantedAuthorities
- パラメーター:
user
- 権限を持つユーザーが必要です- 戻り値:
- ユーザーに付与されたロールのセット。
getGroupMembershipRoles
getContextSource
protected org.springframework.ldap.core.ContextSource getContextSource()getGroupSearchBase
setConvertToUpperCase
public void setConvertToUpperCase(boolean convertToUpperCase) ロールを大文字に変換しますsetDefaultRole
すべてのユーザーに割り当てられるデフォルトのロール。- パラメーター:
defaultRole
- 目的のプレフィックスを含むロール名。
setGroupRoleAttribute
setGroupSearchFilter
setRolePrefix
ディレクトリからロードされた値の前に付加されるプレフィックスを設定します。 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
現在の LDAP テンプレートを返します。これを継承するクラスが使用されるテンプレートをオーバーライドできるように利用可能なメソッド- 戻り値:
- LDAP テンプレート
- 関連事項:
getGroupRoleAttribute
これを継承するクラスがオーバーライドできるように、使用可能なロール名メソッドにマップされる LDAP 属性の属性名を返します- 戻り値:
- ロールマッピングに使用される属性名
- 関連事項:
getGroupSearchFilter
この populator メソッドに設定された検索フィルターを返します。これにより、これを継承するクラスがオーバーライドできます。- 戻り値:
- 検索フィルター
- 関連事項:
getRolePrefix
この populator メソッドで使用されるロールプレフィックスを返します。これにより、これを継承するクラスがオーバーライドできます。- 戻り値:
- ロールのプレフィックス
- 関連事項:
isConvertToUpperCase
protected final boolean isConvertToUpperCase()ロール名が使用可能な大文字のメソッドに変換され、これを継承するクラスがオーバーライドできる場合に true を返します。- 戻り値:
- ロール名が大文字に変換される場合は true。
- 関連事項: