3

そこで、JNDI を利用した Active Directory で Windows 2003 にユーザー アカウントを作成したいと考えています。次の例に従っています: http://forums.sun.com/thread.jspa?threadID=582103 (最初の投稿)。次のコードは LDAP エラーをスローしています。これは、ユーザーを作成し、パスワードの最小有効期間が 1 日に制限されているパスワードを設定するというニワトリと卵の問題によるものと思われます。

//Replace the "unicdodePwd" attribute with a new value
//Password must be both Unicode and a quoted string
String newQuotedPassword = "\"Password2000\"";
byte[] newUnicodePassword = newQuotedPassword.getBytes("UTF-16LE");

mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("unicodePwd", newUnicodePassword));
mods[1] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("userAccountControl",Integer.toString(UF_NORMAL_ACCOUNT + UF_PASSWORD_EXPIRED)));

// Perform the update
ctx.modifyAttributes(userName, mods);
System.out.println("Set password & updated userccountControl");

Ldap エラー コード: 53 問題 5003 (実行できません) が表示されますが、パスワードの最小有効期間であると思われるパスワードを設定しようとすると、エラーが発生します。本当に奇妙なのは、Active Directory ユーザーとコンピューターにドメイン管理者としてアクセスすると、パスワードも設定できないことです。パスワードを変更する唯一の方法は、[パスワードのリセット] オプションを選択し、[ユーザーは次回のログオン時にアカウントを変更する必要がある] を有効にすることです。これを設定したら、プログラムと GUI の両方でパスワードを設定できます。

また、作成後の次のログオン時にパスワードの変更を設定しようとしましたが、コードでパスワードの変更を行う前に、これも機能しませんでした。ボックスは変更されましたが、それでもパスワードを変更できず、5003 エラーが発生しました。

Windows 2003 で JNDI を使用してパスワードの有効期限が最小のユーザーを作成した経験のある人はいますか? どんな助けでも大歓迎です。

4

2 に答える 2

1

数か月前に Java を使用して AD サーバーを管理しました。

うまく機能しますが、知っておくべき重要なことがあります。パスワードは、AD では「保護された」属性です。

  • LDAP プロトコルで読み取ることはできません
  • SSH で保護された接続でのみ設定/更新できます。

したがって、Java コードでは、「https://...」アドレスで AD にアクセスし、JNDI 接続属性で SSH プロトコルを指定する必要があります。手順はこちらで説明されています: http://java.sun.com/products/jndi/tutorial/ldap/security/ssl.html

// Specify SSL
env.put(Context.SECURITY_PROTOCOL, "ssl");
于 2010-09-17T15:45:00.080 に答える