当前位置: 首页 > 知识库问答 >
问题:

无法验证Java-LDAP

程项禹
2023-03-14

我的ldiff文件如下所示

dn:uid=test,ou=users,dc=example,dc=com
objectclass:person
objectclass:inetOrgPerson
objectclass:organizationalPerson
objectclass:top
givenName: test
title:test
uid:test
cn:test
sn:sdf
userPassword: 81dc9bdb52d04dc20036dbd8313ed055
mail: test@yopmail.com
creatorsName: cn=Directory Manager,cn=Root DNs,cn=config
modifiersName: cn=Directory Manager,cn=Root DNs,cn=config

用户密码在portal db中使用带有十六进制编码的MD5进行散列。还启用了pre-encoded-password为true,但没有帮助。

public static void main(String[] args) throws NamingException {

        final String ldapAdServer = "ldap://0.0.0.0:389";


        final String ldapUsername = "uid=test,ou=People,dc=example,dc=com";
        final String ldapPassword = "81dc9bdb52d04dc20036dbd8313ed055;


        Hashtable<String, Object> env = new Hashtable<String, Object>();
        env.put(Context.SECURITY_AUTHENTICATION, "simple");
        if (ldapUsername != null) {
            env.put(Context.SECURITY_PRINCIPAL, ldapUsername);
        }
        if (ldapPassword != null) {
            env.put(Context.SECURITY_CREDENTIALS, ldapPassword);
        }
        env.put(Context.INITIAL_CONTEXT_FACTORY,
                "com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URL, ldapAdServer);

        env.put("java.naming.ldap.attributes.binary", "objectSID");
        DirContext ctx = new InitialDirContext(env);

    }

我的要求是我们有一个门户,其密码存储在MD5中的db中,使用十六进制编码,门户集成到ldap中,每次密码更改ldap都使用散列值更新,但上面的java程序根本不起作用。需要认真的帮助。

多谢了。

共有1个答案

董意蕴
2023-03-14

您需要以二进制格式存储密码哈希。您可以在LDIF文件中这样做,方法是使用“::”而不是“:”将属性名与值分开:

dn:uid=test,ou=users,dc=example,dc=com
objectclass:person
objectclass:inetOrgPerson
objectclass:organizationalPerson
objectclass:top
givenName: test
title:test
uid:test
cn:test
sn:sdf
userPassword:: 81dc9bdb52d04dc20036dbd8313ed055
mail: test@yopmail.com
creatorsName: cn=Directory Manager,cn=Root DNs,cn=config
modifiersName: cn=Directory Manager,cn=Root DNs,cn=config
 类似资料:
  • 我写一个oauth与twitter的代码,我有401错误代码和"失败验证oauth签名和令牌"响应从twitter当我获取后请求到https://api.twitter.com/oauth/request_token.这是我的数据,我有: 我的步骤: 1.为签名准备的字符串 2.通过代码创建签名qQwIvFao9yeIQpi9ouz0oFi7/v8=: 3.最终授权标头(带转义引号): 问那些可能

  • 我们的旧系统使用.NET 3.5(运行在Windows Server 2003 32bits上)来验证来自我们客户的电子收据(都使用SHA1RSA算法作为协议)。我们将他们的证书以Base64字符串存储在数据库中。旧代码如下所示: 除了性能不好外,没有其他问题。这就是为什么我们想要转移到使用Java1.7的新系统(运行在Windows Server 2012 64位上)。我们的新代码如下所示: 我

  • 本文向大家介绍CKEditor无法验证的解决方案(js验证+jQuery Validate验证),包括了CKEditor无法验证的解决方案(js验证+jQuery Validate验证)的使用技巧和注意事项,需要的朋友参考一下 最近项目的前端使用了jQuery,表单的前端验证用的是jQuery Validate,用起来很简单方便,一直都很满意的。 前段时间,根据需求为表单中的 textarea 类

  • 本文向大家介绍Java前端Layer.open.btn验证无效解决方法,包括了Java前端Layer.open.btn验证无效解决方法的使用技巧和注意事项,需要的朋友参考一下 今天遇到了一个很可笑的问题,在.Layer弹窗open中设置了多个按钮,只有yes按钮有效,btn2点击后直接关闭弹窗,排查了2个小时后终于解决,就是btn2要return false! 以上方法大家可以测试下 ,感谢你的阅

  • 问题内容: 我正在使用node.js request.js到达api。我收到这个错误 [错误:UNABLE_TO_VERIFY_LEAF_SIGNATURE] 我所有的凭据都是准确有效的,并且服务器还不错。我对邮递员提出了同样的要求。 此代码仅在可执行脚本ex中运行。,那是为什么?是否需要在服务器上运行? 问题答案: 注意 :以下情况很危险,并且将允许在客户端和服务器之间截取和修改API内容。 这