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