我正在开发一个Springboot应用程序,该应用程序需要支持本地(通过基于DAO的提供程序)和多个LDAP服务器(管理配置,存储在数据库中)进行身份验证。
对于单个LDAP提供程序,我的配置方法如下所示:
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(daoAuthenticationProvider());
auth.ldapAuthentication()
.userSearchBase(userSearchBase)
.groupSearchBase(groupSearchBase)
.userSearchFilter(userSearchFilter)
.userDetailsContextMapper(new DaoUserDetailsContextMapper())
.contextSource().url(url+"/"+base)
.managerPassword(managerPassword)
.managerDn(managerDn);
}
通过其他类似的帖子,这似乎可以通过创建多个LDAP提供者来实现,Spring security将在每个提供者之间循环,直到找到成功的登录。我将关联的LDAP配置记录作为外键关联到用户表上。
有没有更有效的方法来尝试与用户相关联的特定LDAPendpoint,或者最好让Spring遍历可用的提供者?
感谢您的任何输入!
经过长时间的搜索,我发现了一些关于Spring Security authentification工作原理的有趣的东西(有一个视频:https://youtu.be/caCJAJC41Rk?t=781)
之后,您可以使用Spring实现的系统,该系统是覆盖支持(class
通过这种方式,您可以实现自己的
CustomAuthentificationProvider
,它实现了身份验证提供者
接口。
public class LocalUserAuthenticationProvider implements AuthenticationProvider {
private final UserRepository;
public LocalUserAuthenticationProvider(UserRepository userRepository){
this.userRepository = userRepository;
}
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
/*my jobs*/
throws new AuthenticationException("Cannot authenticate");
}
@Override
public boolean supports(Class<?> aClass) {
return MyUsernameAuthenticationToken.class.isAssignableFrom(aClass);
}
}
使用您自己的身份验证令牌
public class StringUsernameAuthenticationToken extends UsernamePasswordAuthenticationToken {
public StringUsernameAuthenticationToken(Object principal, Object credentials) {
super(principal, credentials);
}
public StringUsernameAuthenticationToken(Object principal, Object credentials, Collection<? extends GrantedAuthority> authorities) {
super(principal, credentials, authorities);
}
}
我找不到任何解决方案和LDAP
希望这可以帮助人们
它总是导致带有错误消息的catch块 登录失败:未知的用户名或错误的密码。失败:未知的用户名或错误的密码。 我确信给定的密码是正确的。 如何使用给定的密码验证用户名?
问题内容: 如何使用Python + LDAP针对AD进行身份验证。我目前正在使用python-ldap库,它所产生的只是眼泪。 我什至不能绑定执行简单的查询: 运行此命令会给我两个错误之一: -输入错误或故意使用错误的凭据时,它无法通过身份验证。 ldap.INVALID_CREDENTIALS:{‘info’:‘80090308:LdapErr:DSID-0C090334,评论:AcceptS
我有一个Spring MVC应用程序(使用3.0.5版本),需要使用Spring LDAP绑定到Active Directory,以便简单且仅验证用户的凭据。该应用程序托管在Linux服务器上,因此我需要一个跨平台的解决方案。并且应用程序不使用Spring Security性。 在此设置中实现用户身份验证的有效方法是什么?Active Directory支持FastBind控件(id=
在使用普通windows RDP客户端连接用户之前,我需要根据远程桌面服务网关验证用户名和密码输入,因为在凭据无效的情况下,我需要覆盖RDP客户端的默认UI行为,并且我无法使用LDAP或其他服务,因为它必须在网络之外工作只有RDS网关可用。 除此之外,我还没有找到多少关于RDS网关API的文档:http://msdn.microsoft.com/en-us/library/ee672219(v=v
我正在尝试用.NET中的LDAP制作一个简单的身份验证系统。我检查了.NET中的一些名称空间,并简单地制作了标准代码片段,如下所示。 我有一个管理员用户名和密码和,用于对客户端应用程序进行身份验证。我有第二个用户名和密码和,需要在LDAP中检查才能登录。 是管理帐户,只是LDAP中的用户。那么如何检查的密码呢?
我试图让我们的所有组织用户使用他们的LDAP域凭据登录到Jenkins。使用下面的选项,只有1个特定OU下的用户才能登录。我想提供多个OU进行搜索。 我们的Active Directory结构如下: ca->美国->用户->实际用户id ca->印度->用户->实际用户id 目前,只有属于美国OU的用户才能成功登录到该应用程序。我希望来自美国和印度的用户能够成功登录。我认为将用户搜索库和组搜索库都