# LDAP 命名空间选项
LDAP 实现广泛地使用 Spring LDAP,因此熟悉该项目的 API 可能是有用的。
# 使用以下命令定义 LDAP 服务器
<ldap-server>
元素此元素设置一个 Spring LDAPContextSource
供其他 LDAP bean 使用,定义 LDAP 服务器的位置和用于连接它的其他信息(例如用户名和密码,如果它不允许匿名访问的话)。它还可以用于创建用于测试的嵌入式服务器。这两个选项的语法细节在LDAP 章节中都有涉及。实际的ContextSource
实现是DefaultSpringSecurityContextSource
,它扩展了 Spring LDAP 的LdapContextSource
类。manager-dn
和manager-password
属性分别映射到后者的userDn
和password
属性。
如果在应用程序上下文中只定义了一个服务器,那么其他 LDAP 命名空间定义的 bean 将自动使用它。否则,你可以给元素一个“id”属性,并使用server-ref
属性从其他名称空间 bean 引用它。这实际上是id
实例的 Bean id
,如果你想在其他传统的 Spring bean 中使用它的话。
# <ldap-server>属性
模式显式指定应该使用哪个嵌入式 LDAP 服务器。值为
apacheds
和unboundid
。默认情况下,这将取决于 Classpath 中的库是否可用。身份证一个 Bean 标识符,用于在上下文的其他地方引用 Bean。
LDIF显式指定要加载到嵌入式 LDAP 服务器中的 LDIF 文件资源。LDIF 应该是一个 Spring 资源模式(即 Classpath:init.ldif)。默认值是 Classpath *😗.ldif
Manager-dn将用于对(非嵌入式)LDAP 服务器进行身份验证的“Manager”用户标识的用户名。如果省略,将使用匿名访问。
管理器-密码Manager 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-authentication-provider>属性
组-角色-属性包含将在 Spring Security 中使用的角色名的 LDAP 属性名。映射到
DefaultLdapAuthoritiesPopulator
的groupRoleAttribute
属性。默认为“cn”。群组搜索基础搜索组成员搜索的基础。映射到
DefaultLdapAuthoritiesPopulator
的groupSearchBase
构造函数参数。默认值为“”(从根搜索)。组搜索过滤器组搜索过滤器。映射到
DefaultLdapAuthoritiesPopulator
的groupSearchFilter
属性。默认值为(uniqueMember={0})
。替换的参数是用户的 DN。角色前缀一个非空的字符串前缀,它将被添加到从 Persistent 加载的角色字符串中。映射到
DefaultLdapAuthoritiesPopulator
的rolePrefix
属性。默认值为“role_”。在默认值为非空的情况下,使用值“none”表示无前缀。服务器-ref可选使用的服务器。如果省略,并且注册了一个默认的 LDAP 服务器(使用没有 ID 的 <ldap-server>),则将使用该服务器。
user-context-mapper-ref通过指定一个 UserDetailsContextMapper Bean,允许对加载的用户对象进行显式定制,该用户对象将根据用户目录条目中的上下文信息被调用
用户-详细信息-类允许指定用户条目的 ObjectClass。如果设置了,框架将尝试将定义的类的标准属性加载到返回的 UserDetails 对象中
user-dn-pattern如果你的用户在目录中的固定位置(即你可以直接从用户名计算出 DN,而无需进行目录搜索),则可以使用此属性直接映射到 DN。它直接映射到
userDnPatterns
的AbstractLdapAuthenticator
属性。该值是用于构建用户 DN 的特定模式,例如uid={0},ou=people
。键{0}
必须存在,并将被用户名代替。用户搜索基础用户搜索的搜索基础。默认值为“”。仅与“用户搜索过滤器”一起使用。
如果需要执行搜索以在目录中定位用户,则可以设置这些属性来控制搜索。
BindAuthenticator
将被配置为FilterBasedLdapUserSearch
,并且属性值直接映射到该 Bean 构造函数的前两个参数。如果这些属性 AREN 没有设置,并且没有提供user-dn-pattern
作为替代,那么将使用user-search-filter="(uid={0})"
和user-search-base=""
的默认搜索值。用户搜索过滤器用于搜索用户的 LDAP 过滤器(可选)。例如
(uid={0})
。替换的参数是用户的登录名。如果需要执行搜索以在目录中定位用户,则可以设置这些属性来控制搜索。
BindAuthenticator
将被配置为FilterBasedLdapUserSearch
,并且属性值直接映射到该 Bean 构造函数的前两个参数。如果没有设置这些属性 AREN,并且没有提供user-dn-pattern
作为替代选项,那么将使用user-search-filter="(uid={0})"
和user-search-base=""
的默认搜索值。
# <ldap-authentication-provider>的子元素
# <password-compare>
这被用作<ldap-provider>
的子元素,并将身份验证策略从BindAuthenticator
切换到PasswordComparisonAuthenticator
。
# <password-compare>的父元素
# <password-compare>属性
散列定义了用于用户密码的散列算法。我们强烈建议不要使用 MD4,因为它是一种非常弱的散列算法。
密码属性目录中包含用户密码的属性。默认值为“userpassword”。
# <password-compare>的子元素
# <ldap-user-service>
这个元素配置一个 LDAPUserDetailsService
。所使用的类是LdapUserDetailsService
,它是FilterBasedLdapUserSearch
和DefaultLdapAuthoritiesPopulator
的组合。它支持的属性具有与<ldap-provider>
中相同的用法。
# <ldap-user-service>属性
cache-ref定义了对缓存的引用,以便与 UserDetailsService 一起使用。
组-角色-属性包含将在 Spring Security 中使用的角色名的 LDAP 属性名。默认为“cn”。
群组搜索基础搜索组成员搜索的基础。默认值为“”(从根搜索)。
组搜索过滤器组搜索过滤器。默认值为
(uniqueMember={0})
。替换的参数是用户的 DN。身份证 Bean 标识符,用于在上下文的其他地方引用 Bean。
角色前缀一个非空的字符串前缀,它将被添加到从持久存储中加载的角色字符串中(例如“role_”)。在默认值为非空的情况下,使用值“none”表示无前缀。
服务器-ref可选使用的服务器。如果省略,并且注册了一个缺省的 LDAP 服务器(使用没有 ID 的 <ldap-server>),则将使用该服务器。
user-context-mapper-ref通过指定一个 UserDetailsContextMapper Bean,允许对加载的用户对象进行显式定制,该用户对象将根据用户目录条目中的上下文信息被调用
用户-详细信息-类允许指定用户条目的 ObjectClass。如果设置了,框架将尝试将已定义类的标准属性加载到返回的 UserDetails 对象中
用户搜索基础用户搜索的搜索基础。默认值为“”。仅与“用户搜索过滤器”一起使用。
用户搜索过滤器用于搜索用户的 LDAP 过滤器(可选)。例如
(uid={0})
。替换的参数是用户的登录名。
← 方法安全性 WebSocket 安全 →