LDAPS从Java绑定性能
我使用下面的代码对来自独立java应用程序的用户进行身份验证:LDAPS从Java绑定性能,java,ldap,Java,Ldap,我使用下面的代码对来自独立java应用程序的用户进行身份验证: import java.util.Hashtable; import javax.naming.Context; import javax.naming.directory.InitialDirContext; public class Authenticate { public static void main(String[] args) { try { Hashtable<Strin
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.directory.InitialDirContext;
public class Authenticate
{
public static void main(String[] args)
{
try
{
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "LDAPS://my_ldap_server:636");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL,
"CN=0@0.com,CN=myCustomers,CN=PartX,DC=testCom,DC=local");
env.put(Context.SECURITY_CREDENTIALS, "user_password");
env.put(Context.SECURITY_PROTOCOL, "ssl");
for (int i = 0; i < 50; i++)
{
long start = System.currentTimeMillis();
new InitialDirContext(env);
// send request, wait for response
long end = System.currentTimeMillis();
System.out.println("Round trip response time = "
+ (end - start) + " millis");
}
System.out.println("Welcome");
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
import java.util.Hashtable;
导入javax.naming.Context;
导入javax.naming.directory.InitialDirContext;
公共类身份验证
{
公共静态void main(字符串[]args)
{
尝试
{
Hashtable env=新的Hashtable();
put(Context.INITIAL\u Context\u工厂,“com.sun.jndi.ldap.LdapCtxFactory”);
put(Context.PROVIDER\u URL,“LDAPS://my\u ldap\u server:636”);
环境put(Context.SECURITY_认证,“simple”);
环境put(Context.SECURITY_负责人,
“中国=0@0.com,CN=myCustomers,CN=PartX,DC=testCom,DC=local”);
环境put(Context.SECURITY_凭证,“用户密码”);
环境保护协议(Context.SECURITY_PROTOCOL,ssl);
对于(int i=0;i<50;i++)
{
长启动=System.currentTimeMillis();
新环境;
//发送请求,等待响应
long end=System.currentTimeMillis();
System.out.println(“往返响应时间=”
+(结束-开始)+“毫秒”);
}
System.out.println(“欢迎”);
}
捕获(例外e)
{
e、 printStackTrace();
}
}
}
我每次绑定的响应时间接近200毫秒,这是非常高的。我的问题是,当从java执行LDAP绑定时,其他人看到了什么样的响应时间
必须有其他方法来根据LDAP绑定用户。请分享你的方法。我有一个绑定操作的.NET实现,执行时间大约为20毫秒。任何建议都会有所帮助
提前谢谢
LdapContext.reconnect()
,但在幕后,它将在网络上执行完全相同的操作根据Oracle对LDAP/LDAPS身份验证的实现(无论是否使用连接池),将创建一个LDAPClient。此lDAPClient创建LDAPConnection,并在执行绑定/身份验证后关闭连接 如果连接池属性设置为true,则仅当安全主体和密码相同时,才会使用池连接 对于一个拥有一百万用户的web应用程序,我们不应该共享连接。这将使ldap服务器过载 ldap客户端和连接代码位于JavaRT.jar中。在ldaps/ssl的情况下,与没有ssl的ldap相比,会观察到延迟 如果找到一种方法,指示ldap客户机使用相同的ldap连接对象(就像我们对jdbc连接所做的那样),那么ldap身份验证可以大大优化 当我们试图只搜索用户时,Ldap连接池是有意义的,而不是当我们试图执行身份验证时
简言之,我同意原来的海报。使用LDAPS身份验证时存在性能延迟。我还想听听其他的经验。池连接如何使LDAP服务器过载,而不是池连接如何使其过载?连接池与“指示ldap客户端使用同一ldap连接对象的方式……有什么不同?”专家您好。还有其他输入吗?特别是其他java实现绑定用户看到的响应时间。