与LDAP Windows密码身份验证(Windows password Authenticatio

2019-09-29 06:31发布

我有一个桌面应用程序,我可以得到的域用户名与authentication.getPrincipal()。toString()方法的代码line.If域名和用户输入完全一致授予我。另一方面所有访问用户,当用户另一类型的用户名(其不匹配域用户名),程序检查在数据库中的口令。

问题是,我想检查与Windows域密码口令不DB.When用户写入的用户名,程序应该查找Windows域密码本username.I尝试LDAP,但我无法得到与LDAP域密码。

是否有任何可能的方式来检查与域密码的用户? 在别的意思,就是那里查找属于用户的密码可能的方式是什么?

Answer 1:

这应该是不可能取回密码(应该没有人能得到其他用户的密码)。

但是,如果他们访问登录的同时该帐户则不需要检查密码。 你可以去authentication.getPrincipal的事实表明他们登录为用户-你不再需要询问密码。

另外,如果他们使用的是给定的Windows-auth的用户名和密码,而没有登录为用户访问有可能是一个办法,看看他们的密码是有效的,但我对此表示怀疑,因为isValid()的布尔通话将让你知道你只是交给密码是有效的,因此Windows已经泄露自己的密码。

编辑:

Java的LDAP认证码(来源: http://java.sun.com/products/jndi/tutorial/ldap/security/ldap.html )

// Set up the environment for creating the initial context
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, 
    "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");

// Authenticate
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, authentication.getPrincipal().toString() );
env.put(Context.SECURITY_CREDENTIALS, "PASSWORD");

// Create the initial context
DirContext ctx = new InitialDirContext(env);


文章来源: Windows password Authentication with LDAP