2017-01-23 14 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

여러분 모두 도와 주셔서 감사 드리며 github 개발자에게 감사드립니다.

내가 결국이 일을하는 데 사용되는 코드는 ...이었다 internets에 하나가 될 수없는 것 같은

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) 

생각 나는 작업 솔루션을 게시 할 것입니다! 신은 나의 동료 devop 사람들을 속력을 낸다.

0

ldap : // 대신 ldaps : //를 사용해보십시오. 또는 스키마를 전혀 사용하지 말고 서버 정의에서 use_ssl = True를 전달하십시오. AD 연결은 ssl을 사용하여 암호를 수정해야합니다.

+0

괜찮 았으므로 시도했지만 아직 작동하지 않습니다. 'code server = 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의 최신 릴리스를 사용해야합니다.