繁体   English   中英

如何通过LDAPS使用Java代码重置RedHat目录服务器中的用户密码?

[英]How to reset the user password in RedHat Directory server using Java code via LDAPS?

如何从Java应用程序使用LDAPS访问RedHat目录服务器/ HP UX目录服务器? 我试图通过LDAP访问它它工作正常,但在使用LDAPS时,它没有建立与服务器的连接。

这是我的代码,它不起作用:

public void setPassword(String userDn,String password) {
    InitialDirContext ctx=null;
    DirContext connection;
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    String systemname = "ldaps://myserver:636";
    env.put(Context.PROVIDER_URL, systemname);  
    env.put(Context.SECURITY_PRINCIPAL, "cn=directory manager");
    env.put(Context.SECURITY_CREDENTIALS, "MySecret");
    ctx = new InitialDirContext(env);
    connection = (DirContext)ctx;
    connection.lookup("dc=mydomain,dc=com");
    ModificationItem[] mods = new ModificationItem[1];
    Attribute mod0 = new BasicAttribute("userpassword",password);
    mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, mod0);
    connection.modifyAttributes(userDn, mods);
    connection.close();
}

如果我用ldap替换ldaps ,上面的代码工作正常。

但我需要代码也适用于LDAPS。 有些网站提到需要密钥库,证书等。但我不知道这些。

你可以试试几件事:

  • 使用已知的好工具ldapsearch来验证LDAP客户端是否可以连接到服务器
  • 使用openssl s_client -connect host:port来验证客户端是否可以建立安全连接。

在使用Java时,需要获取服务器证书或证书颁发机构链的副本,并将其添加到与代码一起使用的JVM的Java密钥库中。

如何获取证书取决于您使用的LDAP实现。 LDAP管理员应该能够提供帮助。

关于添加Java KeyStore证书,请参阅Google。

-Jim

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM