http://support.microsoft.com/kb/269190/ja
ここを参考に、unicodePwd属性をDELETE + ADDで処理すると、きちんと履歴のポリシーも反映されることが分かった。
ちなみに、複雑性のチェックは、REPLACEでも問題無かったので気づかなかった。
Pythonのテストプログラムはこんな感じ。
#!/usr/bin/python
import ldap
oldpassword = "pass12345"
newpassword = "newass"
def unicodePassword(plainpasswd):
return ('"%s"' % plainpasswd).encode("utf-16le")
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
ldap.set_option(ldap.OPT_REFERRALS, 0)
conn = ldap.initialize("ldaps://win2008")
conn.bind_s("Administrator@example.com","adminpass")
username = "testuser1"
filter = "(sAMAccountName=%s)" % username
rt = conn.search_s("dc=example,dc=com", ldap.SCOPE_SUBTREE, filter)
for (dn,attrs) in rt:
if dn:
userdn=dn
print userdn
unipass = unicodePassword(newpassword)
oldunipass = unicodePassword(oldpassword)
mod_attrs = [(ldap.MOD_DELETE, 'unicodePwd', oldunipass)] + [(ldap.MOD_ADD,'unicodePwd',unipass)]
# mod_attrs = [(ldap.MOD_REPLACE, 'unicodePwd', unipass)]
conn.modify_s(userdn, mod_attrs)
0 件のコメント:
コメントを投稿