你好,我在使用Ldap创建简单登录时遇到问题。我已经从spring.io网站下载了入门项目:入门LDAP。
它可以很好地与ldif文件配合使用,但我想用运行ldap服务器来代替它。我已经试了好几天了,没有任何进展。我用这段代码获得了最好的结果(替换为getting started project的WebSecurity配置)
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated().and().httpBasic();
}
@Override
protected void configure(AuthenticationManagerBuilder authManagerBuilder) throws Exception {
authManagerBuilder.authenticationProvider(activeDirectoryLdapAuthenticationProvider()).userDetailsService(userDetailsService());
}
@Bean
public AuthenticationManager authenticationManager() {
return new ProviderManager(Arrays.asList(activeDirectoryLdapAuthenticationProvider()));
}
@Bean
public AuthenticationProvider activeDirectoryLdapAuthenticationProvider() {
ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider(null, "ldap://ip:port/", "ou=GROUP,dc=domain,dc=com");
provider.setConvertSubErrorCodesToExceptions(true);
provider.setUseAuthenticationRequestCredentials(true);
return provider;
}
}
如果我尝试使用格式为“用户名”“密码”的良好用户名和密码登录控制台输出:ActiveDirectoryLdapAuthenticationProvider:Active Directory身份验证失败:提供的密码无效
如果我使用“username@domain.com“和良好的密码,页面只是重新加载,没有输出到控制台。
如果使用随机用户名和密码控制台:Active Directory身份验证失败:提供的密码无效
有人能帮忙吗?
正如评论中所建议的,我打开了日志记录,发现问题与“相同”username@domain.com“也是。
问题出在aciveDirectoryLdapAuthentiationProvider()
中有3个问题。
ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider("domain.com", "ldap://ip:port/", "dc=domain,dc=com");
provider.setSearchFilter("(&(objectClass=user)(sAMAccountName={0}))");
return SpringSecurityLdapTemplate.searchForSingleEntryInternal(context,
searchControls, searchRoot, searchFilter,
new Object[] { bindPrincipal });
替换为:
return SpringSecurityLdapTemplate.searchForSingleEntryInternal(context,
searchControls, searchRoot, searchFilter,
new Object[] { username });
完成aciveDirectoryLdapAuthenticationProvider:
@Bean
public AuthenticationProvider activeDirectoryLdapAuthenticationProvider() {
ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider("domain.com", "ldap://ip:port/", "dc=domain,dc=com");
provider.setSearchFilter("(&(objectClass=user)(sAMAccountName={0}))");
provider.setConvertSubErrorCodesToExceptions(true);
provider.setUseAuthenticationRequestCredentials(true);
return provider;
}
有人能为第二/第三个问题提供更好的解决方案吗?也许更好的搜索过滤器?我在ldap中没有任何字段匹配“username@domain.com“使用ActiveDirectoryLdapAuthProvider的bindPrincipal格式。
我得到了一个Spring Boot2Reactive Web应用程序,它目前有一个基于JWT的身份验证系统。现在,我想添加一个LDAP后端用于身份验证,并通过Kerberos允许单点登录(SSO)。 似乎Kerberos和LDAP支持目前仅限于webmvc,没有专用的反应版本可用。 由于关于将所有3个组件(WebFlux,LDAP+Kerberos)集成到一个应用程序中的文档非常少,我想问一下是否
这是我的安全配置代码: 但在编译spring时,仍在为我生成密码。 我通过print语句检查了配置是否正在加载,发现安全配置正在加载。我是否应该对给定的用户ID和密码进行任何更改。 提前感谢。
在我们的Spring Boot应用程序中,我们使用对可以访问我们应用程序的用户进行身份验证。我们在身份验证功能上没有看到任何问题,但是当我们点击URL时,我们会得到LDAP的以下状态: 在跟踪此空指针异常时,我们在尝试访问时获得此跟踪: 最后,下面是我们的安全配置的样子: 现在我们确实在控制台中得到一条消息,说,但这是我们的预期,我们对此很满意。看来健康终点并不尊重这一点。我不知道这是我们的代码的
但是当我使用web表单登录时,我会得到以下错误: 是否有类似于http://docs.spring.io/spring-security/site/docs/3.2.4.ci-snapshot/reference/htmlsingle/#ldap的文档解释如何在没有spring XML的情况下实现此功能?
我是一个客户端项目的新手,它是通过oasp4j创建的,并且依赖于Spring Boot。 客户端项目,使用Spring Security、Spring MVC和登录是基于LDAP的AD,项目工作;我的任务是建立一个单一的用户身份验证(SSO),现在我找不到一个好的轨道来启动它。 我读过关于CAS、SAML、OAuth2、Waffle、SSOCircle和Kerberos的文章,但我不能真正选择其中
我在我的应用程序中使用了Spring-Boot1.3.1和Spring-Boot-Actutor。我使用作为中的父级。 为了禁用安全性,我在中添加了2个条目。 它仍然没有禁用基本的安全性。当我在本地Tomcat中启动应用程序时,我看到日志文件中的默认密码。