0

Spring LDAPTemplate を使用して OpenLDAP を制御しようとしています。

LDAP には、グループとユーザーの組織単位があります。グループ関連付けを使用して、新しいユーザーを LDAP にバインドしようとしています。(一般ユーザーアカウント)新しいユーザーをバインドしようとすると、gidNumber属性オブジェクトにも属性を入れます。しかし、次のようなエラーが発生します。

[LDAP: error code 65 - attribute 'gidNumber' not allowed]; nested exception is javax.naming.directory.SchemaViolationException: [LDAP: error code 65 - attribute 'gidNumber' not allowed]; remaining name 'ou=staff'

これが私がこれまでに試したことです:

DistinguishedName dn = new DistinguishedName();
dn.add("ou", "staff");
Attributes attributes = new BasicAttributes();
attributes.put("objectClass", "inetOrgPerson");
attributes.put("uid", username);
attributes.put("givenName", name);
attributes.put("gidNumber", gidNumber.toString());
attributes.put("sn", surname);
attributes.put("cn", name + " " + surname);
attributes.put("userPassword", password);
ldapTemplate.bind(dn, null, attributes);

ここに私のスキーマがあります:

+--> dc=ibu,dc=edu,dc=tr (5)
  ---> cn=admin
  +--> ou=group (1)
    | ---> cn=Academic
  ---> ou=guest
  +--> ou=staff (2)
    | ---> cn=John Clark
  ---> ou=student
4

2 に答える 2

0

LDAPエントリには、構造オブジェクトクラスが1つだけ含まれている必要があります。ただし、一部の壊れたサーバーでは、複数の構造オブジェクトクラスが許可されています。構造オブジェクトクラスを追加します(追加するクラスは、エントリが使用される目的によって異なります)。

于 2012-12-13T16:31:25.363 に答える
0

posixAccount という別のオブジェクト クラスを追加する必要があります。属性 gidNumber がこのクラスに属しているためです。したがって、次のようにオブジェクト クラスをもう 1 つ追加してみてください。

attributes.put("objectClass", "posixAccount");
于 2012-12-13T10:24:24.290 に答える