gpt4 book ai didi

java - 使用已安装的 java keystore 证书连接到 ldap

转载 作者:行者123 更新时间:2023-11-30 10:18:48 24 4
gpt4 key购买 nike

我认为这个问题可能已经在某些地方得到了回答,但到目前为止我还找不到任何解决方案。我的问题是,我想连接到 LDAP 并从 ldap 目录中找到一个用户,但这里的问题是,它是一个安全的 LDAP,所以我必须通过证书向 ldap 服务器验证我是谁。所以,我已经使用以下命令安装了该证书

keytool -importcert -file D:\KSTLMRADD01.dev.chartercom.com.cer -keystore cacerts -alias KSTLMRADD01.dev.chartercom.com.cer

所以通过使用 system.setproperty 我设置了 javax.net.ssl.truststore 位置和 keystore 密码,因为我在 java keystore 中有大约 100 个证书,所以在建立连接时无法使用适当的证书,请参阅下面的代码,如果有任何错误或建议,请告诉我。任何帮助都会非常有用。

public class TestLdap{
public static void main(String[] args){
System.setProperty("javax.net.ssl.trustStore", "C:\\Program Files\\Java\\jdk1.8.0_152\\jre\\lib\\security\\cacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");


try {
// use the service user to authenticate
Hashtable<String, Object> serviceEnv = new Hashtable<String, Object>();
serviceEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
serviceEnv.put(Context.PROVIDER_URL, ldapUrl);
serviceEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
serviceEnv.put(Context.SECURITY_PROTOCOL, "ssl");
serviceEnv.put(Context.SECURITY_PRINCIPAL, serviceUserDN);
serviceEnv.put(Context.SECURITY_CREDENTIALS, serviceUserPassword);
LdapContext ctx = new InitialLdapContext(environment, null);
ctx.setRequestControls(null);
DirContect context = new InitialDirContext(environment);NamingEnumeration<?> namingEnum = ctx.search("ou=service_accounts,dc=com", "(objectclass=user)", getSimpleSearchControls());
while (namingEnum.hasMore ()) {
SearchResult result = (SearchResult) namingEnum.next ();
Attributes attrs = result.getAttributes ();
System.out.println(attrs.get("sn"));

}
namingEnum.close();
ctx.close();
}}

所以我尝试了 DirContext 和 LdapContext,但两者都不适合我。

最佳答案

通过在我的代码中设置以下两行,我可以信任这些证书。

System.setProperty("javax.net.ssl.trustStore", "C:\\Program Files\\Java\\jdk1.8.0_152\\jre\\lib\\security\\cacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

关于java - 使用已安装的 java keystore 证书连接到 ldap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49052836/

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