繁体   English   中英

Windows LDAP密码认证

[英]Windows password Authentication with LDAP

我有一个桌面应用程序,我可以通过authentication.getPrincipal()。toString()代码行获取域用户名。如果域名和用户输入完全匹配,我将授予用户所有访问权限。输入另一个用户名(与域用户名不匹配),程序将检查数据库中的密码。

问题是我想用Windows域密码而不是DB来检查密码。当用户写入用户名时,程序应该为该用户名查找Windows域密码。我尝试使用LDAP,但无法获得LDAP的域密码。

有什么方法可以使用域密码检查用户? 换句话说,是否有可能查找属于用户的密码?

检索密码应该是不可能的(没有人应该能够获取另一个用户的密码)。

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

或者,如果他们使用给定的Windows身份验证用户名和密码访问而未以该用户身份登录,则可能有一种方法来查看其密码是否有效,但我对此表示怀疑,因为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);

暂无
暂无

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

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