作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
通用名称,假设使用“John Smith”组成 DN,但是否可以使用 UID 组成完整的 DN。
我目前正在这样做并且它有效。
Hashtable env = new Hashtable(11);
env.put(Context.INITIAL_CONTEXT_FACTORY,
env.put(Context.PROVIDER_URL, "ldap://myDomain.com");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "CN=John Smith,OU=IT,OU=MyCompany,OU=Users,DC=myDomain,DC=com");
env.put(Context.SECURITY_CREDENTIALS, "myPassWrd");
现在我想使用 UID
(例如 J.smith)而不是他的全名进行身份验证。有什么想法吗?
最佳答案
在我们的 LDAP 身份验证例程中,我们创建一个 jndi
用户帐户,一旦应用程序使用 jndi 用户的可分辨名称建立连接(例如: uid=jndi,ou=branch,dc=com,dc=your,dc=organization
) 然后(为树中的用户节点提供分支)它使用以下代码来检查用户是否uid
在 LDAP 树中:
public String findUserDnByBranchAndUid(String branchName, String uid) throws NamingException {
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
searchControls.setCountLimit(1);
NamingEnumeration<SearchResult> answer;
answer = dirContext.search(branchName, String.format("(uid=%s)", uid), searchControls);
if (answer.hasMoreElements()) {
SearchResult searchResult = answer.nextElement();
return searchResult.getNameInNamespace();
} else {
return null;
}
}
这样调用它:
String userDn = findUserDnByBranchAndUid("ou=users,dc=com,dc=your,dc=organization", "jsmith");
如果 userDn
不为空,则该用户存在于树中,然后我们继续使用该 DN(和用户密码)而不是 jndi 用户 DN 建立新连接。
如果一切顺利,则用户 jsmith
将仅使用他/她的 ID 登录,而无需提供任何用户不友好的 DN。
关于java - DN - Java JDNI LDAP - 公用名与用户 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14506928/
我是一名优秀的程序员,十分优秀!