我对LDAP几乎一无所知,甚至对Spring安全性一无所知,但是我试图配置Spring Boot应用程序以针对ldap实例进行身份验证并被卡住。
我在adldap.company.com和dn = dc = ad,dc = company,dc = com的基础dn上获得了ldap服务器名称
我有一些执行简单绑定并工作的python代码。
LDAP_USERNAME = 'username@ad.company.com'
LDAP_PASSWORD = 'password'
base_dn = 'dc=ad,dc=company,dc=com' # not used for bind I guess, only search
try:
ldap_client = ldap.initialize('ldap://adldap.company.com')
ldap_client.set_option(ldap.OPT_REFERRALS,0)
ldap_client.simple_bind_s(LDAP_USERNAME, LDAP_PASSWORD)
except ldap.INVALID_CREDENTIALS as e:
ldap_client.unbind()
return 'Wrong username and password: %s' % e
except ldap.SERVER_DOWN:
return 'AD server not available'
如果我运行此代码,它似乎已成功以“ username@ad.company.com”和密码“ password”绑定。
我也有一个WebSecurityConfig类,我认为应该处理auth:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/secure")
.authorizeRequests()
.anyRequest().fullyAuthenticated()
.and()
.httpBasic();
}
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.ldapAuthentication()
.userDnPatterns("uid={0}")
.contextSource()
.url("ldap://adldap.company.com");
//.url("ldap://adldap.company.com/dc=ad,dc=company,dc=com");
}
}
当我在应用程序中转到/ secure时,会弹出一个基本身份验证,但是随后尝试输入的任何内容都会使我获得401 Unauthorized。我尝试了不带域的“
username@ad.company.com”,将这些内容放入了{0}@adldap.company.com之类的userDnPatterns中,以及其他一些东西。我尝试过使用带有基本dn的不同URL。似乎没有任何作用。我想念什么?
另外,这是验证用户身份的正确方法吗?我已经阅读了绑定身份验证以及有关绑定和搜索的内容,但是服务器不允许匿名绑定,因此我想我需要某种可以绑定并执行搜索的“应用程序用户”,对吗?那个更好吗”?
Active Directory具有自己的用于用户身份验证的非标准语法,与通常的LDAP DN绑定不同。
Spring Security为Active Directory提供了专门的AuthenticationProvider。
尝试这个 :
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/secure")
.authorizeRequests()
.anyRequest().fullyAuthenticated()
.and()
.httpBasic();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(activeDirectoryLdapAuthenticationProvider());
}
@Bean
public AuthenticationManager authenticationManager() {
return new ProviderManager(Arrays.asList(activeDirectoryLdapAuthenticationProvider()));
}
@Bean
public AuthenticationProvider activeDirectoryLdapAuthenticationProvider() {
ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider("adldap.company.com", "ldap://adldap.company.com");
provider.setConvertSubErrorCodesToExceptions(true);
provider.setUseAuthenticationRequestCredentials(true);
return provider;
}
}
我正在编写一个程序,用于验证通过HTTP POST发送的用户名和密码,并根据ldap进行验证,无论验证是否成功,都将响应发送回用户。 我的Websecurity配置器实现 我的测试服务器.ldif
现在,我们有了集成执行器。我希望我的执行器endpoint可以通过基本认证在浏览器中访问。 为此,我用@order(1)添加了WebSecurityConfigurerAdapter的一个实现。它在浏览器上工作得很好。但是,当我从angualar应用程序调用登录url时,它为/oauth/token url给出了401个未经授权的错误,因此我无法从ui应用程序登录。 任何帮助将感谢解决此错误。 类
我需要连接到LDAP服务器,但出现以下错误: javax。命名。AuthenticationException:[LDAP:错误代码49-80090308:LDAPPER:DSID-0C09034,注释:AcceptSecurityContext错误,数据525,向量 用户名和密码正确,我尝试设置相同的用户并传入另一个用编写的应用程序。NET,它在那里工作,但在Java中,我收到了错误消息。 我的
我使用Presto Cli测试ldap,下面是以下命令: 它不要求密码,我能够连接到Presto集群,并能够运行查询。为什么LDAP身份验证对此没有任何帮助?
将错误获取为javax。命名。AuthenticationException:[LDAP:错误代码49-80090308:LDAPPER:DSID-0C09042F,注释:AcceptSecurityContext错误,数据52e,v2580
我正在尝试为我的Spring MVC应用程序集成LDAP身份验证。如果我将contextSource设置为虚拟用户DN和相应的密码,则用户可以成功登录。我想做的是能够在不使用虚拟用户的情况下绑定ldap连接。 下面是工作原理的代码- 现在我已经尝试删除硬编码的userDn和密码(更新init())- 应用程序启动正常,但我遇到了一个例外——“必须在连接上成功绑定”。 Stacktrace- [UP
我有一个asp。net(C#)设置为使用LDAP进行身份验证。一切正常,我可以和我们目录中的任何用户一起登录。问题是,我需要将某些页面限制为特定组中的人。我正在使用登录查看帐户文件夹的方法。 我的网站设计很简单,它有三个页面,一个供所有人查看(账户文件夹之外),另外两个需要身份验证。我希望一个组可以访问两个网页,另一个组只能访问其中一个网页。 我试过: 但不管我的用户不在该组中。我有一个LDAP浏
问题内容: 我正在使用以下过滤器在我的Web应用程序中启用NTLM身份验证。 我得到Windows浏览器身份验证提示。运行正常。除了以下事实外- 我无法确定身份验证是成功还是失败! * 两种情况均无错误。 *在每种情况下都将打印用户名(正确或相反),工作站等。 web.xml很简单: 问题答案: 您收到的是Type 3消息,但是除了打印出详细信息之外,您什么都没做。此时,您需要验证客户的响应,并发