2017-01-23 39 views
1

私は自分のパスワードをスクリプトで更新するように要求しています。ここでのコードは次のとおりです。Python 3.5、ldap3、modify_password()

#!/usr/bin/python3.5 

from ldap3 import Server, Connection, NTLM, ALL 

server = Server('ldap://192.168.0.80', use_ssl=True) 

conn = Connection(server, user="local\\dctest", password="Pa55word1", authentication=NTLM, auto_bind=True) 

dn = "CN=dctest,CN=Users,DC=home,DC=local" 

conn.extend.microsoft.modify_password(dn, new_password="Pa55word2", old_password="Pa55word1") 

私が手にエラーがある:

{ 'DN': ''、 'タイプ': 'modifyResponse'、 '説明': 'unwillingToPerform' '紹介':なし、 '結果':53、 'メッセージ' '00002077:SVCERR:DSID-03190E44、問題5003(WILL_NOT_PERFORM)、 データ0 \ n \のX00'}

任意のアイデア何私は間違っている?

私はDCへの完全なアクセス権を持っており、パスワードが正しいことなどを確認しました。私はすべてのドキュメントを読んでいます。

どのようなヘルプも素晴らしいでしょう!

+0

パスワードをもう一度確認できますか? FYI:https://ldapwiki.com/wiki/WILL_NOT_PERFORM – suiwenfeng

+0

(私はAD経由でパスワードをリセットしました)チェックしましたが、ユーザーにドメインの管理者になり、権限の問題がないことを確認しました。 – Comm4nd0

+0

パスワードの問題ではないと思われる場合は、まずNTLMなしで接続を作成できるかどうか試してみてください。 - authentication = NTLM - – suiwenfeng

答えて

1

ご協力いただきありがとうございました。ご協力いただき、ありがとうございました。

私は最後に、この作品を作るために使用されるコードだった...

from ldap3 import Server, Connection 

server = Server('ldaps://<AD server address>', use_ssl=True) 
conn = Connection(server, user="<domain>\\<username>", password="<current password>", auto_bind=True) 

dn = 'CN=<username>,OU=Users,DC=<dominaname>' 

res = conn.extend.microsoft.modify_password(dn, old_password='<current password>', new_password='<new password>') 
print(res) 

はインターネットの上の任意のがあるように思われないよう、私は実用的なソリューションを投稿しようと思いました!神は私の同僚たちをスピードアップします。

0

ldap://の代わりにldaps://を試してみてください。またはスキームをまったく使用せず、サーバー定義でuse_ssl = Trueを渡します。 AD接続では、sslを使用してパスワードを変更する必要があります。

+0

これは私が試したことですが、それでもうまくいきませんでした: 'code server =サーバー( 'ldaps://192.168.0.80'、get_info = ALL) ' – Comm4nd0

+0

それは' ad_modify_password ? – marabu

+0

全体の線はどのように見えますか? – Comm4nd0

0

どのバージョンのldap3を使用していますか? LDAP3バージョン2.2のソースコードから、それが機能は同じように使用する必要がありますように私には思われる:バージョン0.9.4.2のよう

#!/usr/bin/python3.5 
from ldap3 import Server, Connection, NTLM, ALL 
server = Server('ldap://192.168.0.80', use_ssl=True) 
conn = Connection(server, user="local\\dctest", password="Pa55word1", authentication=NTLM, auto_bind=True) 
res = ldap3.extend.microsoft.modifyPassword(conn, user, "new_Pa55word2", "old_Pa55word1") 
1

ldap3.modify_passwordを()Active Directoryと動作しません、これは、ADによってサポートされていないパスワード変更拡張操作を使用するためです。 MSはway to do things different with ADを見つけました。 ldap3の作者(cannatag)はこれを知り、すぐ後にad_modify_password()を追加しました。 ldap3の新しいリリースを使用する必要があります。