当前位置: 首页 > 知识库问答 >
问题:

如何在Spring-Security LDAP中使用ActiveDirectory

燕志学
2023-03-14

我正在尝试在Spring MVC应用程序上为LDAP身份验证设置Spring Security性。我似乎无法让简单/主体身份验证与LdapAuthenticationProvider一起工作,因此我尝试使用ActiveDirectoryLdapAuthenticationProvider,它在默认情况下会执行此操作。

return SpringSecurityLdapTemplate.searchForSingleEntryInternal(context,
                searchControls, searchRoot, searchFilter,
                new Object[] { bindPrincipal });
[LDAP: error code 32 - 0000208D: NameErr: DSID-03100213, problem 2001 (NO_OBJECT), data 0, best match of:
'DC=my,DC=company,DC=com']

WebSecurityConfigurerAdapter子类的配置(我在其中连接了AuthenticationManagerBuilder),基本上是这样的:

@Autowired
public void init(AuthenticationManagerBuilder auth) throws Exception {
   ActiveDirectoryLdapAuthenticationProvider provider =
            new ActiveDirectoryLdapAuthenticationProvider("my.company.com", "LDAPS://ad.my.company.com:636/dc=my,dc=company,dc=com");
   provider.setConvertSubErrorCodesToExceptions(true);
   auth.authenticationProvider(provider);
}

是什么导致了NameNotFoundException?这是配置ActiveDirectory身份验证的正确方法吗?

共有1个答案

白子默
2023-03-14

掌心。LDAP服务器的URL不应该包括X.501域组件部分,至少在我的目录中是这样。我想这是有意义的,因为第一个构造函数参数是域的名称(以FQDN样式)。因此构造函数参数应该是...

new ActiveDirectoryLdapAuthenticationProvider("my.company.com", "ldaps://ad.my.company.com:636");

当绑定完成,但搜索失败时,错误消息提示了这一点。确切的错误有“no_object”作为原因,这是搜索库关闭的线索。我最初配置的搜索基本上添加了搜索库(DCs)两次。

 类似资料:
  • 我正在和Spring Boot一起开发一个集成了LDAP的应用程序。我能够成功地连接到LDAP服务器并验证用户。现在,我需要添加“记住我”功能。我试图通过不同的职位(这),但无法找到我的问题的答案。官方的Spring安全文件指出 如果您正在使用不使用UserDetailsService的身份验证提供程序(例如,LDAP提供程序),那么它将不起作用,除非您的应用程序上下文中也有UserDetails

  • 我在我的应用程序中使用LDAP身份验证。我使用以下代码: 使用空密码进行身份验证。我知道我需要插入一个空密码检查,因为在这种情况下并不是所有的LDAP服务器都返回错误。如何以及在哪里插入空白密码的检查更好?

  • 我在圣杯2.4.4上使用插件Spring安全核心:2.0.0 上面的工作正常,我可以从用户所属的组推断出用户ROLE_。 但是我们有一个需求更改,我们现在需要从嵌套的 LDAP 组树中推断出用户 ROLE。 我查了一下,spring-security-ldap: 2.0.1是基于springSecurity 3.2.9的,它还不包括NestedLdapAuthoritiesPopulator,所以

  • 我有一个外部YML文件,其中包含一些grails配置。在此文件中,添加的配置之一是grails Spring Security ldap插件。我的配置如下所示: 我在常规(由grails快速配置提供)应用程序yml文件中也有一些属性。此文件仅包含: 我正在通过覆盖Application.groovy类中的set环境方法在grails中加载外部配置。它看起来如下所示: 当我在grails中发出run

  • 问题内容: 我刚刚开始从事Spring数据,Hibernate,MySQL,JPA项目。我切换到spring-data,以便不必担心手动创建查询。 我注意到当您使用spring-data时不需要使用of,因为我也尝试了没有注释的查询。 有特定的原因为什么我应该/不应该使用注释? 作品: 也可以: 提前致谢! 问题答案: 您实际上在问什么?注释或的用法。 根本不需要,因为您声明的接口将由Spring

  • 问题内容: 我一直在研究将JasperReports(6.0.0)与Spring MVC(4.1.3)结合使用以生成PDF报告。Spring充斥着与JasperReports集成以生成PDF的“特定于Spring”的方式: 使用 依赖于现已弃用的JasperReport功能 __ 采用 采用 我很难在网上找到好的完整示例,并想分享我的发现。 随意添加与“如何将JasperReports与Sprin