LDAP Namespace 选项
本站(springdoc.cn)中的内容来源于 spring.io ,原始版权归属于 spring.io。由 springdoc.cn 进行翻译,整理。可供个人学习、研究,未经许可,不得进行任何转载、商用或与之相关的行为。 商标声明:Spring 是 Pivotal Software, Inc. 在美国以及其他国家的商标。 |
LDAP的一些细节将在 其自己的章节中介绍。我们将在这里展开,对命名空间选项如何映射到Spring Bean进行一些解释。LDAP的实现广泛地使用了Spring LDAP,所以对该项目API的一些熟悉可能是有用的。
使用 <ldap-server>
元素定义LDAP服务器
这个元素设置了一个 Spring LDAP ContextSource
,供其他 LDAP Bean 使用,定义了LDAP服务器的位置和其他信息(比如用户名和密码,如果它不允许匿名访问),以便连接到它。它也可以用来创建一个用于测试的嵌入式服务器。这两个选项的语法细节将在 LDAP章节 中介绍。实际的 ContextSource
实现是 DefaultSpringSecurityContextSource
,它扩展了Spring LDAP的 LdapContextSource
类。manager-dn
和 manager-password
属性分别映射到后者的 userDn
和 password
属性。
如果你在应用环境中只定义了一个服务器,其他LDAP命名空间定义的Bean将自动使用它。否则,你可以给该元素一个 "id" 属性,并使用 server-ref
属性从其他命名空间Bean中引用它。这实际上是 ContextSource
实例的 bean id
,如果你想在其他传统Spring Bean中使用它的话。
<ldap-server> 属性
-
mode 明确指定应该使用哪个嵌入式ldap服务器。值是
apacheds
和unboundid
。默认情况下,它将取决于该库在classpath中是否可用。
-
id 一个Bean ID 标识符,用于在上下文中引用该Bean的其他地方。
-
ldif 明确指定一个 ldif 文件资源来加载到嵌入式LDAP服务器。ldif应该是一个Spring resource pattern(即
classpath:init.ldif
)。默认是classpath*:*.ldif
。
-
manager-dn "manager" 用户身份的用户名(DN),它将被用来验证一个(非嵌入的)LDAP服务器。如果省略,将使用匿名访问。
-
manager-password manager DN 的密码。如果指定了
manager-dn
,这是必须的。
-
port 指定一个IP端口号。例如,用于配置一个嵌入式LDAP服务器。默认值是
33389
。
-
root 嵌入式LDAP服务器的可选根后缀。默认是 "dc=springframework,dc=org"
-
url 当不使用嵌入式LDAP服务器时,指定ldap服务器的URL。
<ldap-authentication-provider>
这个元素是创建一个 LdapAuthenticationProvider
实例的速记。默认情况下,它将被配置为一个 BindAuthenticator
实例和一个 DefaultAuthoritiesPopulator
。与所有命名空间认证提供者一样,它必须作为 authentication-provider
元素的一个子元素被包含。
<ldap-authentication-provider> 属性
-
group-role-attribute 包含角色名称的LDAP属性名称,将在 Spring Security 中使用。映射到
DefaultLdapAuthoritiesPopulator
的groupRoleAttribute
属性。默认为 "cn"。
-
group-search-base group 成员搜索的搜索基础。映射到
DefaultLdapAuthoritiesPopulator
的groupSearchBase
构造函数参数。默认为""(从root搜索)。
-
group-search-filter group 搜索过滤器。映射到
DefaultLdapAuthoritiesPopulator
的groupSearchFilter
属性。默认为(uniqueMember={0})
。被替换的参数是用户的DN。
-
role-prefix 一个非空的字符串前缀,将被添加到从持久化加载的角色字符串中。映射到
DefaultLdapAuthoritiesPopulator
的rolePrefix
属性。默认为 "ROLE_"。在默认值为非空的情况下,使用值 "none" 表示没有前缀。
-
server-ref 要使用的可选服务器。如果省略,并且注册了一个默认的LDAP服务器(使用
<ldap-server>
,没有Id),该服务器将被使用。
-
user-context-mapper-ref 允许通过指定
UserDetailsContextMapper
Bean 对加载的用户对象进行显式定制,该bean将被调用,其上下文信息来自用户的目录条目。
-
user-details-class 允许指定用户条目的
objectClass
。如果设置了,框架将尝试将定义的类的标准属性加载到返回的UserDetails
对象中。
-
user-dn-pattern 如果你的用户在目录中的一个固定位置(也就是说,你可以直接从用户名算出DN,而不用做目录搜索),你可以使用这个属性直接映射到DN。它直接映射到
AbstractLdapAuthenticator
的userDnPatterns
属性。该值是用于构建用户DN的特定模式,例如,uid={0},ou=people
。key{0}
必须存在,并将被替换为用户名。
-
user-search-base 用于用户搜索的搜索基础。默认为 ""。只与
user-search-filter
一起使用。如果你需要执行搜索来定位目录中的用户,那么你可以设置这些属性来控制搜索。
BindAuthenticator
将被配置为FilterBasedLdapUserSearch
,属性值直接映射到该 Bean 构造函数的前两个参数。如果这些属性没有被设置,并且没有提供user-dn-pattern
作为替代,那么默认的搜索值user-search-filter="(uid={0})"
和user-search-base=""
将被使用。
-
user-search-filter 用来搜索用户的LDAP过滤器(可选)。例如
(uid={0})
。被替换的参数是用户的登录名。如果你需要执行搜索来定位目录中的用户,那么你可以设置这些属性来控制搜索。
BindAuthenticator
将被配置为FilterBasedLdapUserSearch
,属性值直接映射到该 Bean 构造函数的前两个参数。如果这些属性没有被设置,并且没有提供user-dn-pattern
作为替代,那么默认的搜索值user-search-filter="(uid={0})"
和user-search-base=""
将被使用。
<password-compare>
<ldap-user-service>
这个元素配置了一个LDAP UserDetailsService
。使用的类是 LdapUserDetailsService
,它是 FilterBasedLdapUserSearch
和 DefaultLdapAuthoritiesPopulator
的组合。它支持的属性与 <ldap-provider>
中的用法相同。
<ldap-user-service> 属性
-
cache-ref 定义一个对缓存的引用,以便与
UserDetailsService
一起使用。
-
group-role-attribute 包含角色名称的LDAP属性名称,该名称将在Spring Security中使用。默认为 "cn"。
-
group-search-base group 成员搜索的基础。默认为 ""(从root搜索)。
-
group-search-filter group 搜索过滤器。默认为
(uniqueMember={0})
。被替换的参数是用户的DN。
-
id 一个Bean ID 标识符,用于在上下文中引用该Bean的其他地方。
-
role-prefix 一个非空的字符串前缀,将被添加到从持久性存储加载的角色字符串中(例如,"ROLE_")。在默认为非空的情况下,使用值 "none" 表示没有前缀。
-
server-ref 要使用的可选服务器。如果省略,并且注册了一个默认的LDAP服务器(使用
<ldap-server>
,没有Id),该服务器将被使用。
-
user-context-mapper-ref 允许通过指定一个
UserDetailsContextMapper
Bean来明确定制加载的用户对象,该bean将被调用,并带有来自用户目录条目的上下文信息。
-
user-details-class 允许指定用户条目的
objectClass
。如果设置了,框架将尝试将定义的类的标准属性加载到返回的UserDetails
对象中。
-
user-search-base 用于用户搜索的搜索基础。默认 为 ""。只与
user-search-filter
一起使用。
-
user-search-filter 用来搜索用户的LDAP过滤器(可选)。例如
(uid={0})
。被替换的参数是用户的登录名。