我尝试读取 Active Directory 中的用户名,但收到错误消息。错误是: 线程“main”中出现异常 javax.naming.AuthenticationException:[LDAP:错误代码 49 - 80090308:LdapErr:DSID-0C0903AA,注释:AcceptSecurityContext 错误,数据 525,v1772]
但是,我的代码是:
package client;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.directory.*;
import javax.naming.ldap.*;
import javax.naming.*;
import java.util.Hashtable;
import java.util.Enumeration;
public class AD {
public AD() {
super();
}
public static void main(String[] args) throws NamingException {
Hashtable envVars = new Hashtable();
envVars.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
envVars.put(Context.PROVIDER_URL, "ldap://" + "IP:Port");
envVars.put(Context.SECURITY_AUTHENTICATION, "simple");
envVars.put(Context.SECURITY_PRINCIPAL, "username");
envVars.put(Context.SECURITY_CREDENTIALS, "password");
DirContext myContext = new InitialDirContext(envVars);
try{
SearchControls searchCtrls = new SearchControls();
searchCtrls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String[] attributes = { "cn", "telephoneNumber", "sn", "userPrincipalName","memberOf","name" };
searchCtrls.setReturningAttributes(attributes);
String filter = "(objectClass=organizationalPerson)";
NamingEnumeration values = myContext.search("CN=Users,DC=bma.gov.bh,DC=gov,DC=bh",filter, searchCtrls);
while (values.hasMoreElements())
{
SearchResult result = (SearchResult) values.next();
Attributes attribs = result.getAttributes();
if (null != attribs)
{
for (NamingEnumeration ae = attribs.getAll(); ae.hasMoreElements();)
{
Attribute atr = (Attribute) ae.next();
String attributeID = atr.getID();
for (
Enumeration vals = atr.getAll();
vals.hasMoreElements();
System.out.println(attributeID +": " +vals.nextElement()) );
}
}
}
myContext.close();
}
catch(Exception e)
{
//e
}
}
}
问题是从这一行开始的:
DirContext myContext = new InitialDirContext(envVars);
请帮忙
最佳答案
请注意,代码80090308并不能完全识别这个问题。因为数据代码给出了有关该问题的一些详细信息:
- 未找到 525 个用户
- 52e 凭据无效
- 530 目前不允许登录
- 531 不允许在此工作站登录
- 532 密码已过期
- 533 帐户已停用
- 701 帐户已过期
- 773 用户必须重置密码
- 775 个用户帐户已锁定
有关更多详细信息,请参阅此页面:http://www-01.ibm.com/support/docview.wss?uid=swg21290631
非常感谢 IBM 支持!
关于java - 在jsp中读取Active Directory用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9358137/