1

作为 ASP.NET 网站上一组管理工具的一部分,我正在使用目录服务更改用户的 Active Directory 密码。

我收到错误:

错误:无法更改密码(您有权限吗?)。
System.Reflection.TargetInvocationException:调用的目标已引发异常。
---> System.UnauthorizedAccessException:访问被拒绝。
(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))
---内部异常堆栈跟踪结束---
在 System.DirectoryServices.DirectoryEntry.Invoke(String methodName, Object[] args)
在 System.DirectoryServices.AccountManagement.SDSUtils.SetPassword(
System.DirectoryServices.AccountManagement.ADStoreCtx.SetPassword(AuthenticablePrincipal p, String newPassword ) 处的 DirectoryEntry de, String newPassword)

Web.config阅读:

<authentication mode="Windows" />
<identity impersonate="true" />

在 Visual Studio 调试环境中,设置密码例程成功完成,但在从其他计算机访问时却没有。我正在尝试使用模拟来允许此请求 - 该站点可以正确地告诉我我的域和用户名(使用 Context.User.Identity),并且可以查询 Active Directory 以获取两种环境中所有用户的列表。

我的 PrincipalContext 是:

new PrincipalContext(ContextType.Domain, "DOMAINNAME");

非常感谢任何帮助。

4

1 回答 1

0

您需要添加

<authorisation>
    <deny user="?" />
</authorisation>

这会拒绝匿名用户的访问,强制用户进行身份验证,然后通过模拟将成为活动用户。没有这个,您仍然以 IUser 访客帐户连接。

您还需要在 IIS 中启用 Windows 身份验证。

于 2012-07-17T17:03:14.017 回答