我有一个桌面应用程序,我可以得到的域用户名与authentication.getPrincipal()。toString()方法的代码line.If域名和用户输入完全一致授予我。另一方面所有访问用户,当用户另一类型的用户名(其不匹配域用户名),程序检查在数据库中的口令。
问题是,我想检查与Windows域密码口令不DB.When用户写入的用户名,程序应该查找Windows域密码本username.I尝试LDAP,但我无法得到与LDAP域密码。
是否有任何可能的方式来检查与域密码的用户? 在别的意思,就是那里查找属于用户的密码可能的方式是什么?
这应该是不可能取回密码(应该没有人能得到其他用户的密码)。
但是,如果他们访问登录的同时该帐户则不需要检查密码。 你可以去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);