使用ASP.NET目录服务模拟拒绝访问



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

我收到错误:

错误:无法更改密码(您有权限吗?)
System.Reflection.TargetInvocationException:异常已由调用的目标抛出
--->System.UnauthorizedAccessException:访问被拒绝
(HRESULT中的异常:0x80070005(E_ACCESSDENIED))
---内部异常堆栈跟踪结束---
位于System.DirectoryServices.DirectoryEntry.Invoke(字符串methodName,Object[]args)
位于System.DirectoryServices.AccountManagement.SDUtils.SetPassword(DirectoryEntryde,字符串newPassword)
位于System.DirectoryServices.AccountManagement.ADStoreCtx.SetPassword(AuthenticablePrincipalp、 字符串newPassword)

Web.config读取:

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

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

我的主要上下文是:

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

非常感谢您的帮助。

您需要添加

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

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

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

最新更新