4

UserPrincipalクラスを使用してユーザーのパスワードを変更しているときに、AccessDenied例外が発生します。

Windows 認証 (ドメイン ユーザー)を介して Asp.Net アプリケーションにログインしています。他のユーザーのパスワードを変更しようとすると、アクセス拒否の例外が発生します。ログインしているユーザーと同じことをしている場合、すべて問題ありません-パスワードを変更できます。

PrincipalContextを使用してUserPrincipalオブジェクトを取得する場合、「プリンシパル - domain\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;
  }

私はすでに答えを探しており、同様のトピックに対する答えがたくさんあることを知っています. しかし、それらのどれも私の問題を説明していないと思います。

4

0 に答える 0