#Ldapユーザーを特定のグループに関連付ける方法を見つけるのに問題があります。 「CN =マネージャ、OU = < SYSTEM_NAME>、OU =ユーザー、OUは= <サーバー>、DC:LdapユーザーをJavaグループに関連付けます
Attributes attrs = new BasicAttributes();
BasicAttribute basicAttrs = new BasicAttribute("objectclass");
basicAttrs.add("top");
basicAttrs.add("person");
BasicAttribute memberOf = new BasicAttribute("memberOf");
memberOf.add("Managers"); // Tried with distinguished name too
memberOf.add("Administrators"); // Tried with distinguished name too
attrs.put(basicAttrs);
attrs.put("cn", user.getLogin());
attrs.put("name", user.getLogin());
attrs.put("login", user.getLogin());
attrs.put("mail", user.getMail());
attrs.put("displayName", user.getDisplayName());
attrs.put("memberOf", memberOf);
try {
ctx.bind("CN=" + user.getLogin() + "," + baseDn, null, attrs);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
私も同じよう識別名を使用しようとしました:私が試したものである
= com "が、動作しませんでした。 私はLdapグループを参照するべきだと思います。
しかし、私はこのエラーを得た:
javax.naming.directory.InvalidAttributeValueException: Malformed 'memberOf' attribute value; remaining name 'CN=lcarvalho,OU=<system_name>,OU=Users,OU=<server>,DC=com'
at com.sun.jndi.ldap.LdapClient.encodeAttribute(LdapClient.java:951)
at com.sun.jndi.ldap.LdapClient.add(LdapClient.java:999)
at com.sun.jndi.ldap.LdapCtx.c_bind(LdapCtx.java:396)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_bind(ComponentDirContext.java:277)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.bind(PartialCompositeDirContext.java:197)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.bind(PartialCompositeDirContext.java:186)
at javax.naming.directory.InitialDirContext.bind(InitialDirContext.java:158)
...
これは私のアプリケーションのライン以外のすべてのスタックトレースです。
"cn=Managers,ou=<system_name>,ou=Users,dc=<server>,dc=com"
はLDAPでのディレクトリ構造が始まる:
"CN=Managers,OU=<system_name>,OU=Users,OU=<server>,DC=com"
は次のようになります。あなたの代わりにドメインコンポーネントの1つの余分組織単位を指定したと思われるので
私はJNDIを使ってLDAPを操作していませんが、 'person'オブジェクトクラスに 'memberOf'属性がある場合、LDAPサーバーをチェックインしましたか?何に対して開発しているLDAPサーバーですか?いずれの場合も、 'memberOf'の完全DNを指定する必要があります。 – hovanessyan
これを試してみましたが、問題を再現できます。 'memberOf'属性が存在し、DNが正しい。しかし、ここでの主な問題は、ユーザーをグループに追加することは、ユーザーオブジェクトではなくグループオブジェクトから行われることです(@EJPは以下でコメントしました)。 –