首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ldap身份验证不适用于spring boot

Ldap身份验证不适用于spring boot
EN

Stack Overflow用户
提问于 2020-05-22 14:48:54
回答 2查看 460关注 0票数 0

我能够使用spring boot ActiveDirectoryLdapAuthenticationProvider进行LDAP身份验证。相同的代码可以在其他客户端环境中工作,但在某个客户端上却不能正常工作。我可以连接到LDAP和bind,也可以连接到roodn,一切都很正常。

在搜索筛选器中,代替使用默认筛选器,即:

代码语言:javascript
复制
(&(objectClass=user)(userPrincipalName={0}))

我正在使用:

代码语言:javascript
复制
(&(objectCategory=person)(objectClass=user)(sAMAccountName={0})) 

我尝试了很多搜索过滤器,但似乎都不起作用。

有人可以在这方面帮助,没有太多关于LDAP的知识。

EN

回答 2

Stack Overflow用户

发布于 2020-05-22 21:49:04

真正的问题是你应该通过userPrincipalName还是sAMAccountName来匹配。这真的取决于你的用户期望什么。

当你说“sAMAccountName”时,你通常会想到用户名。

userPrincipalName看起来像一个电子邮件地址。它通常与后跟@sAMAccountName和域DNS名称相同,但不必如此。

你可以在这里看到更多关于它的信息:User Naming Attributes

无论用户键入什么值作为用户名,都应该与您在此处选择的属性相匹配。

票数 1
EN

Stack Overflow用户

发布于 2020-06-01 17:07:12

@gariel用户希望严格使用sAMAccountName登录。我使用电子邮件ID (&(objectClass=user)(userPrincipalName={0}))筛选器进行登录。但是要让它在sAMAccountName上使用他们的LDAP,把它改成(&(objectClass=user)(sAMAccountName={0}))是行不通的。它们的sAMAccountName和用户主体名称不相同。

作为一种变通办法,用户输入sAMAccoutName,我使用自定义过滤器拦截请求,而不是完全依赖于spring安全进行身份验证。在自定义过滤器中,我使用JAVA代码查询LDAP以提供该sAMAccountName的emailId。有了用户的emailID之后,我将请求中的username字段从sAMAccountName更新为emailID,然后继续进行身份验证请求(请记住,我已经使用emailID进行了LDAP身份验证)。

在新文件中:.addFilterBefore( SecurityConfig CustomFilter(),UsernamePasswordAuthenticationFilter.class) CustomFilter是我执行上述所有操作的位置。

现在一切正常,但我有新的问题。当用户成功通过身份验证时,如果用户不在本地数据库中并且不需要任何权限,则可以正常工作。但是用户在本地数据库中被定义为ADMIN,并且在身份验证之后,我们为它提供了ADMIN权限,由于某种原因,它进入了一个循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61949318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档