首先,请原谅我的英语,这不是我的母语。
然后,我的问题如下:我正在开发一个管理 Active Directory 的 Web 平台。我可以创建、删除、编辑组、用户、OU 等。
但是。是的,但是。当已连接的用户想要通过平台更改自己的密码时,会失败。它来自 DirectoryEntry.Invoke。
我使用了 DirectoryServices.DirectoryEntry:
directoryEntry.Invoke("SetPassword", password);
directoryEntry.Commit();
因此我尝试了 System.DirectoryServices.AccountManagement,方法如下:
PrincipalContext ctx = new PrincipalContext(ContextType.Machine);
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, Username);
user.SetPassword(password_);
user.Save();
不同的方式,同样的问题。这些代码有效,只有当用户尝试编辑自己的密码时才会失败。
已连接的用户如何更改自己的密码?为什么会出现这个奇怪的问题?
如能提供任何帮助我将非常感激。
答案1
我认为这里的问题是您的应用程序没有权限更新正确的密码!
授予 ASP.NET 应用程序对目录的权限的授权方法是通过在服务帐户标识下运行的特权 IIS 应用程序池或通过在服务帐户标识下运行的 COM+ 实体。
答案2
SetPassword 命令仅适用于管理员用户,因为它强制设置新密码,而无需知道现有密码。非管理员用户需要使用 ChangePassword,这确实要求您同时传递现有密码和新密码。