gpt4 book ai didi

java - 无法从 Java 与 AD 连接

转载 作者:行者123 更新时间:2023-12-02 06:44:49 25 4
gpt4 key购买 nike

我正在尝试从 MS AD 检索一些信息:特定分支机构的成员、部门名称、职位、etc .

我使用了很多例子,包括Apache Directory LDAP APIUnboundID ,但我无法与 AD 连接。

RDN:

C:\Users\Aleksey> whoami /fqdn
CN=my common name here,
OU=my organization unit here,
OU=organization unit 2 here,
OU=organization unit 1 here,
OU=main organization unit here,
DC=.my domain here,
DC=domain 2 here,
DC=main domain here

为了进行搜索,我使用以下过滤器:

public class LdapRetriever {
public static void main (String[] args) {
Hashtable env = new Hashtable();

env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://" +
"ip of domain controller here" + ":389");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
// Also I try to use the following SECURITY_PRINCIPAL:
// my login only, my domain\ my login
env.put(Context.SECURITY_PRINCIPAL, "my login here" + "@" +
"my domain here.domain 2 here.main domain here");
env.put(Context.SECURITY_CREDENTIALS, "my password here");

try {
DirContext ctx = new InitialLdapContext(env,null);
String returnedAtts[]={"sn","title","department","givenName"};

SearchControls searchCtls = new SearchControls();
searchCtls.setReturningAttributes(returnedAtts);
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);

String searchFilter = "(&(objectClass=user)(cn=*))";
String searchBase =
"DC=my domain here,DC=domain 2 here,DC=main domain here";

NamingEnumeration answer = ctx.search(searchBase,
searchFilter, searchCtls);
...

当我使用 env 中的数据创建目录上下文时,出现异常:

Exception in thread "main" javax.naming.AuthenticationException: 
[LDAP: error code 49 - 80090308: LdapErr: DSID-0C090334, comment:
AcceptSecurityContext error, data 531, vece

如果未指定密码,则会出现以下异常:

Problem searching directory: 
javax.naming.NamingException:[LDAP:error code 1 - 00000000:
LdapErr: DSID-0C090627, comment:
In order to perform this operation a successful bind must be completed
on the connection., data 0, vece]; remaining name
'DC=my domain here,DC=domain 2 here,DC=main domain here'

我已确认我的帐户没有被锁定。

根据the list of common active directory LDAP bind errors :

525​  user not found ​
52e​ invalid credentials ​
530​ not permitted to logon at this time​
531​ not permitted to logon at this workstation​
532​ password expired ​
533​ account disabled ​
701​ account expired ​
773​ user must reset password ​
775​ user account locked

就我而言,这意味着:“不允许在此工作站登录”,但使用相同的凭据我可以登录到该域。

可能是什么原因?

最佳答案

错误代码 531 很可能与 AD 的配置有关。在某些情况下,用户只能从一台工作站(例如您的工作电脑)登录。
这是在用户的userWorkstations字段中配置的。
当您无法使用 RDP 登录 AD 时,您需要 AD 管理员检查您的帐户中是否有此字段,以及 AD 服务器是否包含在您的用户工作站中,或者该字段已被完全删除.

关于java - 无法从 Java 与 AD 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18766158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com