การ Reset Password AD (ASP.net C#) on Windows server 2003
http://www.windowsecurity.com/articles/Implementing-Active-Directory-Delegation-Administration.html
เพิ่มเติมที่ไป Research มาครับ
ช่วยแนะนำหน่อยนะครับ ขอบคุณครับ
Date :
2012-03-28 02:10:31
By :
ksillapapan
Reset password on Active Directory
Try
Dim stFind As String
' String for find DirectoryEntry
stFind = String.Format("LDAP://<GUID={0}>", txtObjGUID.Text)
If DirectoryEntry.Exists(stFind) Then
Dim de As New DirectoryEntry(stFind, "Login ของ User ที่ได้รับสิทธิ์ Reset password", "รหัสผ่านของ User")
If de IsNot Nothing Then
de.Invoke("SetPassword", txtNewPassword.Text)
' Success
Else
' never happen
End If
End If
Catch ex As Exception
' Display Exception
End Try
ลองแล้วผ่าน
ประวัติการแก้ไข 2012-03-28 08:49:19 2012-03-28 08:50:12 2012-03-28 08:50:49 2012-03-28 08:52:17
Date :
2012-03-28 08:49:03
By :
watcharop
Mr.Win ช่วยด้วย
ก่อน Post
หลัง Post
Semi-colon เกินมาจากไหนก็ไม่รู้
Date :
2012-03-28 08:54:06
By :
watcharop
ผมยัง งงอยู่เลยค้าบ คือตอนแรก user ที่ผมทดสอบมันก็ติดประมาณ ไม่มีสิทธิ์ แต่พอผมไป เพิ่ม ตรง delegate user ให้ OU มันก็เป็น error แบบที่เห็นอะคับ
หรือว่ามันต้อง set ตรงไหนคับว่า user ไหนสามารถแก้ password ได้
แล้วทําไมต้องใส่ <GUID ด้วยอ่ะครับ งงคับผม
ยังไงขอคําแนะนําด้วยนะค้าบ ขอบคุณค้าบ
Date :
2012-03-28 09:18:06
By :
ksillapapan
การใส่ GUID เป็นการค้นหา DirectoryEntry วิธีหนึ่ง
คุณสามารถใช้วิธีไหนก็ได้ เพื่อให้ได้ DirectoryEntry ของ User ที่ต้องการ Reset password
Date :
2012-03-28 09:59:11
By :
watcharop
ยังไม่ได้ เลยครับ
นี้ ตัวหย่าง โค้ดครับ
Code (C#)
string path = "LDAP://ADSERVER.local/CN=test2,OU=AD-user,DC=ADSERVER,DC=local";
if (DirectoryEntry.Exists(path))
{
DirectoryEntry ent = new DirectoryEntry(path, "administrator", "adminpass");
if (ent != null)
{
ent.Invoke("SetPassword", "newpass");
}
}
Date :
2012-03-29 00:07:04
By :
ksillapapan
ความจริงโค้ดของคุณก็น่าจะใช้ได้แล้วนะ
ว่าแต่ administrator นี้เป็น User บน Domain
แล้วคุณเคย Login ด้วย User Administrator แล้วเข้าไป Reset password User test2
ด้วย Active Directory Users and Computers แล้วใช่ไหมครับ
Code (VB.NET)
DirectoryEntry ent = new DirectoryEntry(path, "administrator", "adminpass");
ผมได้ลอง path รูปแบบเดียวกับคุณ (LDAP://ADSERVER.local/CN=test2,OU=AD-user,DC=ADSERVER,DC=local)
มาลองแล้ว ก็ Reset ได้นะ
เมื่อวานผมใช้คำสั่งนี้ Reset password ของ user ops1
แล้วผมก็ลอง Login ops1 ด้วย password ใหม่ ซึ่งก็ได้ผลสำเร็จ
จึงมั่นใจว่าคำสั่งนี้ใช้ได้
Date :
2012-03-29 09:02:27
By :
watcharop
ขอให้ข้อมูลเพิ่มเติมกับผู้มาอ่านภายหลัง
หากจะเขียนโปรแกรมประเภท Reset password ใน Domain
ไม่ควรเอา Admin User กับ Password ฝังไว้ในโปรแกรมนะขอรับ
ควรจะให้ผู้ใช้ใส่ข้อมูล Admin User กับ Password ผ่านทางฟอร์มจะปลอดภัยกว่า
เพราะถ้า Hacker ได้ Password นี้ไป Domain ล่มสลายแน่ๆ
Date :
2012-03-29 09:07:32
By :
watcharop
Load balance : Server 02