使用UserPrincipal SetPassword方法时AccessDenied

时间:2013-02-14 14:31:13

标签: c# asp.net access-denied userprincipal principalcontext

我在使用 UserPrincipal 类更改用户密码时收到 AccessDenied 例外。< / p>

我通过 Windows身份验证 (域用户)登录Asp.Net应用程序。如果我尝试更改其他用户的密码,我将获得访问被拒绝的异常。如果我对我登录的用户做同样的事情,一切都很好 - 我可以更改密码。

我想,如果我使用 PrincipalContext 获取 UserPrincipal 对象,我会做任何事情我的'校长 - 域\ adminAD '在AD中有特权。

方法体:

public bool SetPassword(string userName, string password)
{
    var saved = false;

    var ldapDomainName = "domain";
    var ldapUsersOU = "OU=TEST,DC=domain,DC=com";
    var ldapLogin = "domain\adminAD";
    var ldapPassword = "password";

    try
    {
        using (var principalContext = new PrincipalContext(
           ContextType.Domain,
           ldapDomainName,
           ldapUsersOU,
           ContextOptions.Signing | ContextOptions.Sealing | ContextOptions.Negotiate,
           ldapLogin,
           ldapPassword))
        {
            userPrincipal = UserPrincipal.FindByIdentity(principalContext, IdentityType.SamAccountName, userName);
            userPrincipal.SetPassword(password);
            userPrincipal.Save(principalContext);
            saved = true;
        }
     }
     catch (Exception ex)
     {
        // Log exception
     }

     return saved;
  }

我已经找到了答案,我知道有很多类似主题的答案。但我猜这些都没有解释我的问题。

0 个答案:

没有答案