我正在尝试开发一个Web项目,但是使用LDAP验证用户身份是必需的,我正在执行以下操作:
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.PROVIDER_URL, "ldap://host:port");
env.put(Context.SECURITY_PRINCIPAL,"user@hostname.lab.local");
env.put(Context.SECURITY_CREDENTIALS, "mysecret");
env.put(Context.REFERRAL,"follow");
DirContext ctx = new InitialDirContext(env);
而且我没有收到任何错误,但是我需要检查用户的状态才能授予访问权限。我该怎么办?我走的路正确吗?
最佳答案
LDAP身份验证分两个步骤进行。
您以具有足够权限的管理员身份绑定到LDAP,该管理员具有足够的权限来根据用户的电子邮件地址或您用作用户名的其他方式查找该用户。
使用该用户的DN作为主体,并使用他提供的密码作为凭据,您尝试以该用户身份进行绑定。
如果所有操作都成功,则对用户进行身份验证。