gpt4 book ai didi

java - 使用 Jetty 进行 LDAP 身份验证

转载 作者:行者123 更新时间:2023-11-29 05:30:44 25 4
gpt4 key购买 nike

我正在尝试使用 Jaas on Jetty 设置基于 LDAP 的身份验证。

我首先配置了 Jetty->Jass 并尝试使用属性文件登录模块,然后当完成此操作后,我将更改为基于 Ldap 的登录模块……但我遇到了一个奇怪的问题:

我有这个配置

jettyLogin {
org.eclipse.jetty.plus.jaas.spi.LdapLoginModule required
debug="true"
contextFactory="com.sun.jndi.ldap.LdapCtxFactory"
hostname="localhost"
port="1389"
bindDn="uid=admin,ou=People,o=acme,dc=example,dc=com"
bindPassword="admin"
authenticationMethod="simple"
forceBindingLogin="false"
userBaseDn="ou=People,o=acme,dc=example,dc=com"
userRdnAttribute="uid"
userIdAttribute="uid"
userPasswordAttribute="userPassword"
userObjectClass="inetOrgPerson"
roleBaseDn="ou=Roles,o=acme,dc=example,dc=com"
roleNameAttribute="cn"
roleMemberAttribute="member"
roleObjectClass="groupOfNames";
};

对于像这样的 LDAP 条目

dn: uid=jduke,ou=People,o=acme,dc=example,dc=com
objectclass: top
objectclass: inetOrgPerson
objectclass: person
uid: jduke
cn: Java
sn: Duke
userPassword: theduke
mail: jduke@acme.example.com

我看到的是 LdapLoginModule 被调用并搜索用户;找到了用户,但是当检索到属性时,缺少 userPassword 属性 (!!) ... 然后它保持为 null,身份验证失败。

我无法理解为什么未检索到 userPassword 属性。

最佳答案

登录模块不应尝试检索 userPassword 属性。 LDAP 是一种身份验证协议(protocol),有自己的方法,称为绑定(bind)。

如果配置正确,Jetty 的 JAAS 模块将尝试使用提供的凭据执行绑定(bind)。如果你改变

forceBindingLogin="false"

forceBindingLogin="true"

在您的配置中,它应该适合您。

关于java - 使用 Jetty 进行 LDAP 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21160295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com