1

ruby 1.9.2 と ruby​​-ldap gem ( http://ruby-ldap.sourceforge.net/ ) を使用して新しい LDAP ユーザーを作成しようとすると、常に次のエラーが表示されます:「無効な DN 構文」

なぜこれが起こるのか分かりません。サーバーへの接続は正常に機能します。既存のユーザーの属性を読み取ることは問題なく可能です。

cn = "#{first_name}#{last_name}"

  entry = [
    LDAP.mod(LDAP::LDAP_MOD_ADD,'objectclass',['top','person', 'user']),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'name',  [cn]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'accountExpires',  ["0"]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'displayName',  [cn]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'name',  [cn]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'givenName',  [first_name]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'sn',  [last_name]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'userPrincipalName',  ["#{first_name}.#{last_name}@my.domain"]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'pwdLastSet', ["0"]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'sAMAccountName',  ["#{first_name}.#{last_name}"]),
    LDAP.mod(LDAP::LDAP_MOD_ADD | LDAP::LDAP_MOD_BVALUES, 'unicodePwd',  [password_hash]),
    LDAP.mod(LDAP::LDAP_MOD_ADD, 'userAccountControl',  ["66048"]),
  ]

  begin
    ldap_connection.add("cn=#{cn}, ou=MyUsers, dc=my, dc=domain", entry)
  rescue
    puts ldap_connection.err2string(ldap_connection.err)
  end

これは、たとえば名が「John」で姓が「Doe」の場合に発生します。

ありがとう

4

1 に答える 1

0

既知の適切な方法を使用して、エントリを追加できることを確認します: ldapmodifyLDIFを含むファイルを作成し、を使用して追加しldapmodifyます。LDIF は次のようになります。

dn: cn=<the cn>,ou=myusers,dc=my,dc=domain
objectClass: top
objectClass: person
objectClass: user
accountExpires: 0
cn: <the cn>
name: <the cn>
... (the rest of the attributes)

を使用して追加するにはldapmodify:

ldapmodify -h hostname -p port -c -a -f <the-file-containing-ldif> \
   -D distinguished-name -w password

distinguished-name、LDAP クライアントで使用される許可 ID である必要があります。このコマンドが成功した場合、LDAP クライアントは、サーバーが正しくセットアップされていること、およびディレクトリー情報ツリー内のその場所にそのエントリーを追加するのに十分なアクセス権が許可 ID にあることを確認できます。

こちらもご覧ください

于 2012-05-25T12:52:01.470 に答える