我正在使用目录服务来更改用户的Active Directory密码,作为ASP.NET网站上一组管理工具的一部分。
我收到错误:
错误:无法更改密码(您是否有权限?) System.Reflection.TargetInvocationException:Exception 被调用的目标抛出了 ---> System.UnauthorizedAccessException:访问被拒绝 (HRESULT异常:0x80070005(E_ACCESSDENIED))
---内部异常堆栈跟踪结束---
在System.DirectoryServices.DirectoryEntry.Invoke(String methodName,Object [] args)
在System.DirectoryServices.AccountManagement.SDSUtils.SetPassword(DirectoryEntry de,String newPassword)
在System.DirectoryServices.AccountManagement.ADStoreCtx.SetPassword(AuthenticablePrincipal) p,String newPassword)
Web.config
读到:
<authentication mode="Windows" />
<identity impersonate="true" />
在Visual Studio调试环境中,“设置密码”例程成功完成,但在从其他计算机访问时则不会。我正在尝试使用模拟来允许此请求 - 网站可以正确地告诉我我的域名和用户名(使用Context.User.Identity),并可以在Active Directory中查询两个环境中所有用户的列表。
我的PrincipalContext是:
new PrincipalContext(ContextType.Domain, "DOMAINNAME");
任何帮助都非常感激。
答案 0 :(得分:0)
您需要添加
<authorisation>
<deny user="?" />
</authorisation>
这会拒绝匿名用户访问,强制用户进行身份验证,然后通过模拟将成为活动用户。如果没有这个,你仍然可以作为IUser来宾帐户进行连接。
您还需要在IIS中启用Windows身份验证。