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-dnmanager-password 属性分别映射到后者的 userDnpassword 属性。

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

<ldap-server> 属性

  • mode 明确指定应该使用哪个嵌入式ldap服务器。值是 apachedsunboundid。默认情况下,它将取决于该库在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> 的父元素

<ldap-authentication-provider> 属性

  • group-role-attribute 包含角色名称的LDAP属性名称,将在 Spring Security 中使用。映射到 DefaultLdapAuthoritiesPopulatorgroupRoleAttribute 属性。默认为 "cn"。

  • group-search-base group 成员搜索的搜索基础。映射到 DefaultLdapAuthoritiesPopulatorgroupSearchBase 构造函数参数。默认为""(从root搜索)。

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

  • role-prefix 一个非空的字符串前缀,将被添加到从持久化加载的角色字符串中。映射到 DefaultLdapAuthoritiesPopulatorrolePrefix 属性。默认为 "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。它直接映射到 AbstractLdapAuthenticatoruserDnPatterns 属性。该值是用于构建用户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="" 将被使用。

<ldap-authentication-provider> 子元素

<password-compare>

这被用作 <ldap-provider> 的子元素,将认证策略从 BindAuthenticator 切换到 PasswordComparisonAuthenticator

<password-compare> 的父元素

<password-compare> 属性

  • hash 定义用于用户密码的hash算法。我们强烈建议不要使用MD4,因为它是一种非常弱的hash算法。

  • password-attribute 目录中包含用户密码的属性。默认为 "userPassword"。

<password-compare> 子元素

<ldap-user-service>

这个元素配置了一个LDAP UserDetailsService。使用的类是 LdapUserDetailsService,它是 FilterBasedLdapUserSearchDefaultLdapAuthoritiesPopulator 的组合。它支持的属性与 <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})。被替换的参数是用户的登录名。