# LDAP 命名空间选项

LDAP 实现广泛地使用 Spring LDAP,因此熟悉该项目的 API 可能是有用的。

# 使用以下命令定义 LDAP 服务器

<ldap-server>元素此元素设置一个 Spring LDAPContextSource供其他 LDAP bean 使用,定义 LDAP 服务器的位置和用于连接它的其他信息(例如用户名和密码,如果它不允许匿名访问的话)。它还可以用于创建用于测试的嵌入式服务器。这两个选项的语法细节在LDAP 章节中都有涉及。实际的ContextSource实现是DefaultSpringSecurityContextSource,它扩展了 Spring LDAP 的LdapContextSource类。manager-dnmanager-password属性分别映射到后者的userDnpassword属性。

如果在应用程序上下文中只定义了一个服务器,那么其他 LDAP 命名空间定义的 bean 将自动使用它。否则,你可以给元素一个“id”属性,并使用server-ref属性从其他名称空间 bean 引用它。这实际上是id实例的 Bean id,如果你想在其他传统的 Spring bean 中使用它的话。

# <ldap-server>属性

  • 模式显式指定应该使用哪个嵌入式 LDAP 服务器。值为apachedsunboundid。默认情况下,这将取决于 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 属性名。映射到DefaultLdapAuthoritiesPopulatorgroupRoleAttribute属性。默认为“cn”。

  • 群组搜索基础搜索组成员搜索的基础。映射到DefaultLdapAuthoritiesPopulatorgroupSearchBase构造函数参数。默认值为“”(从根搜索)。

  • 组搜索过滤器组搜索过滤器。映射到DefaultLdapAuthoritiesPopulatorgroupSearchFilter属性。默认值为(uniqueMember={0})。替换的参数是用户的 DN。

  • 角色前缀一个非空的字符串前缀,它将被添加到从 Persistent 加载的角色字符串中。映射到DefaultLdapAuthoritiesPopulatorrolePrefix属性。默认值为“role_”。在默认值为非空的情况下,使用值“none”表示无前缀。

  • 服务器-ref可选使用的服务器。如果省略,并且注册了一个默认的 LDAP 服务器(使用没有 ID 的 <ldap-server>),则将使用该服务器。

  • user-context-mapper-ref通过指定一个 UserDetailsContextMapper Bean,允许对加载的用户对象进行显式定制,该用户对象将根据用户目录条目中的上下文信息被调用

  • 用户-详细信息-类允许指定用户条目的 ObjectClass。如果设置了,框架将尝试将定义的类的标准属性加载到返回的 UserDetails 对象中

  • user-dn-pattern如果你的用户在目录中的固定位置(即你可以直接从用户名计算出 DN,而无需进行目录搜索),则可以使用此属性直接映射到 DN。它直接映射到userDnPatternsAbstractLdapAuthenticator属性。该值是用于构建用户 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,它是FilterBasedLdapUserSearchDefaultLdapAuthoritiesPopulator的组合。它支持的属性具有与<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 Security