1

MS AD からいくつかの情報を取得しようとしています: 特定の支店のメンバー、部署名、役職など

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'

アカウントがロックされていないことを確認しました。

一般的な Active Directory LDAP バインド エラーのリストによると、次のようになります。

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

私の場合、「このワークステーションでのログオンは許可されていません」という意味ですが、同じ資格情報でドメインにログオンできます。

その理由は何ですか?

4

3 に答える 3

4

エラー コード 531 は、AD の構成に関連している可能性が最も高いです。場合によっては、作業中の PC など、ユーザーが 1 つのワークステーションからのみログインするように制限されていることがあります。
これは、ユーザーのuserWorkstationsフィールドで構成されます。
RDP を使用して AD にログインできない場合は、AD 管理者がアカウントでこのフィールドを確認し、AD サーバーがuserWorkstationsに含まれているか、フィールドが完全に削除されているかを確認する必要があります。

于 2013-09-12T14:53:13.673 に答える