信頼できる ID を使用して Java の 1 つのドメイン (A.domain.com) と別のドメイン (B.lmig.com) で Active Directory グループのメンバーを検索しようとしています。ID に接続し、ldp および ADUC を介して正常に検索を実行できるため、信頼が正しく構成されていることがわかります。ただし、次のコードを使用します。
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://A.domain.com:389/");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "id@B.domain.com");
env.put(Context.SECURITY_CREDENTIALS, "*******");
env.put(Context.REFERRAL, "follow");
InitialLdapContext ctx = new InitialLdapContext(env, null);
String base = "DC=A,DC=domain,DC=com";
String filter = "(memberof=CN=grouptest,OU=someplace,OU=somewhere,OU=thegroups,DC=A,DC=domain,DC=com)";
SearchControls controls = new SearchControls();
controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration<SearchResult> answer = ctx.search(base, filter, controls);
次の例外が発生します。これは、ユーザー ID が存在しないことを示しているようです。
Exception in thread "main" javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data 525, vece
私の質問は、ID が「B.domain.com」ドメインにあり、「A. domain.com」ドメイン?LDP と ADUC を介して検索を実行できるので、構成が欠落しているか、間違ったドメインを参照しているに違いありません。