对于最新的稳定版本,请使用 Spring Security 6.5.3! |
LDAP 命名空间选项
LDAP 实现广泛使用 Spring LDAP,因此熟悉该项目的 API 可能会有所帮助。
使用
<ldap-server>
元素
此元素设置 Spring LDAPContextSource
供其他 LDAP Bean 使用,定义 LDAP 服务器的位置以及用于连接到它的其他信息(例如用户名和密码,如果它不允许匿名访问)。
它还可用于创建用于测试的嵌入式服务器。
LDAP 章节介绍了这两个选项的语法的详细信息。
实际的ContextSource
实现是DefaultSpringSecurityContextSource
它扩展了 Spring LDAP 的LdapContextSource
类。
这manager-dn
和manager-password
属性映射到后者的userDn
和password
属性。
如果在应用程序上下文中只定义了一个服务器,那么其他 LDAP 命名空间定义的 Bean 将自动使用它。
否则,您可以为元素指定一个“id”属性,并使用server-ref
属性。
这其实是豆子id
的ContextSource
实例,如果您想在其他传统的 Spring Bean 中使用它。
<ldap-server> 属性
-
模式显式指定应使用哪个嵌入式 ldap 服务器。值是
apacheds
和unboundid
.默认情况下,这将取决于该库在类路径中是否可用。
-
id 一个 bean 标识符,用于引用上下文中其他地方的 bean。
-
LDIF的显式指定要加载到嵌入式 LDAP 服务器中的 ldif 文件资源。 ldif 应该是 Spring 资源模式(即 classpath:init.ldif)。 默认值为 classpath*:*.ldif
-
经理-dn“管理器”用户身份的用户名 (DN),将用于向(非嵌入式)LDAP 服务器进行身份验证。 如果省略,将使用匿名访问。
-
管理器密码管理器 DN 的密码。 如果指定了 manager-dn,则需要这样做。
-
端口指定 IP 端口号。 例如,用于配置嵌入式 LDAP 服务器。 默认值为 33389。
-
根嵌入式 LDAP 服务器的可选根后缀。 默认值为“dc=springframework,dc=org”
-
网址指定不使用嵌入式 LDAP 服务器时的 ldap 服务器 URL。
<ldap-authentication-provider>
此元素是创建LdapAuthenticationProvider
实例。
默认情况下,这将配置为BindAuthenticator
实例和DefaultAuthoritiesPopulator
.
与所有命名空间身份验证提供程序一样,它必须作为authentication-provider
元素。
<ldap-authentication-provider>属性
-
组角色属性LDAP 属性名称,其中包含将在 Spring Security 中使用的角色名称。 映射到
DefaultLdapAuthoritiesPopulator
的groupRoleAttribute
财产。 默认为“cn”。
-
组搜索基础组成员资格搜索的搜索基础。 映射到
DefaultLdapAuthoritiesPopulator
的groupSearchBase
constructor 参数。 默认为“”(从根搜索)。
-
组搜索过滤器组搜索过滤器。 映射到
DefaultLdapAuthoritiesPopulator
的groupSearchFilter
财产。 默认为(uniqueMember={0})
. 替换的参数是用户的DN。
-
角色前缀将添加到从 persistent 加载的角色字符串的非空字符串前缀。 映射到
DefaultLdapAuthoritiesPopulator
的rolePrefix
财产。 默认为“ROLE_”。 在默认值为非空的情况下,使用值“none”表示无前缀。
-
服务器引用要使用的可选服务器。 如果省略,并且注册了默认 LDAP 服务器(使用没有 ID 的 <ldap-server>),则将使用该服务器。
-
用户上下文映射器引用允许通过指定 UserDetailsContextMapper bean 来显式自定义加载的用户对象,该 bean 将使用用户目录条目的上下文信息进行调用
-
用户详细信息类允许指定用户条目的 objectClass。 如果设置,框架将尝试将定义类的标准属性加载到返回的 UserDetails 对象中
-
用户 dn 模式如果您的用户位于目录中的固定位置(即,您可以直接从用户名计算出 DN,而无需进行目录搜索),则可以使用此属性直接映射到 DN。 它直接映射到
userDnPatterns
属性AbstractLdapAuthenticator
. 该值是用于构建用户 DN 的特定模式,例如uid={0},ou=people
. 关键{0}
必须存在,并将替换为用户名。
-
用户搜索库用户搜索的搜索库。 默认为“”。 仅与“用户搜索过滤器”一起使用。
如果需要执行搜索以在目录中定位用户,则可以设置这些属性来控制搜索。 这
BindAuthenticator
将配置为FilterBasedLdapUserSearch
属性值直接映射到该 bean 构造函数的前两个参数。 如果未设置这些属性,并且没有user-dn-pattern
已作为替代方法提供,则默认搜索值user-search-filter="(uid={0})"
和user-search-base=""
将被使用。
-
用户搜索过滤器用于搜索用户的 LDAP 过滤器(可选)。 例如
(uid={0})
. 替换的参数是用户的登录名。如果需要执行搜索以在目录中定位用户,则可以设置这些属性来控制搜索。 这
BindAuthenticator
将配置为FilterBasedLdapUserSearch
属性值直接映射到该 bean 构造函数的前两个参数。 如果未设置这些属性,并且没有user-dn-pattern
已作为替代方法提供,则默认搜索值user-search-filter="(uid={0})"
和user-search-base=""
将被使用。
<密码比较>
<ldap-user-service>
此元素配置 LDAPUserDetailsService
.
使用的类是LdapUserDetailsService
这是FilterBasedLdapUserSearch
和DefaultLdapAuthoritiesPopulator
.
它支持的属性与<ldap-provider>
.
<ldap-user-service> 属性
-
缓存引用定义对缓存的引用以与 UserDetailsService 一起使用。
-
组角色属性LDAP 属性名称,其中包含将在 Spring Security 中使用的角色名称。 默认为“cn”。
-
组搜索基础组成员资格搜索的搜索基础。 默认为“”(从根搜索)。
-
组搜索过滤器组搜索过滤器。 默认为
(uniqueMember={0})
. 替换的参数是用户的DN。
-
id 一个 bean 标识符,用于引用上下文中其他地方的 bean。
-
角色前缀将添加到从持久存储加载的角色字符串(例如 “ROLE_”)。 在默认值为非空的情况下,使用值“none”表示无前缀。
-
服务器引用要使用的可选服务器。 如果省略,并且注册了默认 LDAP 服务器(使用没有 ID 的 <ldap-server>),则将使用该服务器。
-
用户上下文映射器引用允许通过指定 UserDetailsContextMapper bean 来显式自定义加载的用户对象,该 bean 将使用用户目录条目的上下文信息进行调用
-
用户详细信息类允许指定用户条目的 objectClass。 如果设置,框架将尝试将定义类的标准属性加载到返回的 UserDetails 对象中
-
用户搜索库用户搜索的搜索库。 默认为“”。 仅与“用户搜索过滤器”一起使用。
-
用户搜索过滤器用于搜索用户的 LDAP 过滤器(可选)。 例如
(uid={0})
. 替换的参数是用户的登录名。