Active Directoryとは別のサーバーにWebアプリケーションがあり、ユーザーパスワードを変更したい。コードは次のとおりです。
string newPassword = Membership.GeneratePassword(int.Parse(WebConfigurationManager.AppSettings["passLenght"]),
int.Parse(WebConfigurationManager.AppSettings["passNonAlpha"]));
DirectoryEntry de = new DirectoryEntry(WebConfigurationManager.ConnectionStrings["ADConnString"].ConnectionString,
WebConfigurationManager.AppSettings["ADAdmin"], WebConfigurationManager.AppSettings["ADAdminPass"]);
DirectorySearcher deSearch = new DirectorySearcher(de);
deSearch.Filter = "(&(objectClass=user) (userPrincipalName=" + name + "))";
SearchResultCollection results = deSearch.FindAll();
if (results.Count == 1)
{
foreach (SearchResult OneSearchResult in results)
{
DirectoryEntry AlterUser = OneSearchResult.GetDirectoryEntry();
AlterUser.AuthenticationType = AuthenticationTypes.Secure;
AlterUser.Invoke("SetPassword", newPassword);
AlterUser.CommitChanges();
AlterUser.Close();
}
}
これを開発環境(Active DirectoryとWebアプリケーションが同じサーバー上にある)で実行すると、機能します。しかし、本番環境で実行しようとすると、次のエラーが発生します。
呼び出しのターゲットによって例外がスローされました
私は何が欠けていますか?
ありがとう。
編集:
例外エラーを深く掘り下げることができ、次のようになります。
アクセスが拒否されました。(HRESULTからの例外:0x80070005(E_ACCESSDENIED))