クラス DefaultLdapAuthoritiesPopulator
- java.lang.Object
-
- org.springframework.security.ldap.userdetails.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.ContextSource
getContextSource()
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.String
getGroupRoleAttribute()
これを継承するクラスがオーバーライドできるように、使用可能なロール名メソッドにマップされる LDAP 属性の属性名を返しますprotected java.lang.String
getGroupSearchBase()
protected java.lang.String
getGroupSearchFilter()
この populator メソッドに設定された検索フィルターを返します。これにより、これを継承するクラスがオーバーライドできます。protected SpringSecurityLdapTemplate
getLdapTemplate()
現在の LDAP テンプレートを返します。protected java.lang.String
getRolePrefix()
この populator メソッドで使用されるロールプレフィックスを返します。これにより、これを継承するクラスがオーバーライドできます。protected boolean
isConvertToUpperCase()
ロール名が使用可能な大文字のメソッドに変換され、これを継承するクラスがオーバーライドできる場合に true を返します。void
setAuthorityMapper(java.util.function.Function<java.util.Map<java.lang.String,java.util.List<java.lang.String>>,GrantedAuthority> authorityMapper)
コンテキストレコードを指定してGrantedAuthority
のインスタンスを作成するために使用されるマッピング関数を設定します。void
setConvertToUpperCase(boolean convertToUpperCase)
ロールを大文字に変換しますvoid
setDefaultRole(java.lang.String defaultRole)
すべてのユーザーに割り当てられるデフォルトのロール。void
setGroupRoleAttribute(java.lang.String groupRoleAttribute)
void
setGroupSearchFilter(java.lang.String groupSearchFilter)
void
setIgnorePartialResultException(boolean ignore)
基になるテンプレートに対応するプロパティを設定し、Active Directory に関する特定の課題を回避します。void
setRolePrefix(java.lang.String rolePrefix)
ディレクトリからロードされた値の前に付加されるプレフィックスを設定します。void
setSearchSubtree(boolean searchSubtree)
true に設定すると、サブツリースコープ検索が実行されます。
コンストラクターの詳細
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 オブジェクトによって表されるディレクトリエントリのユーザーの権限を取得します。- 次で指定:
- インターフェース
LdapAuthoritiesPopulator
のgetGrantedAuthorities
- パラメーター:
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)