AD обновить адрес электронной почты с помощью MembershipUser - доступ запрещен - PullRequest
2 голосов
/ 24 марта 2011

Я пытаюсь предоставить некоторым пользователям возможность обновить свой адрес электронной почты в активной директории (AD).Я пытаюсь добиться этого с помощью класса MembershipUser.Но получаю «ошибку общего доступа запрещена».Вот мой код:

        string userName = "sathish";

        System.Web.Security.MembershipUser userDetails = System.Web.Security.Membership.GetUser(userName);
        if (userDetails != null)
        {
            userDetails.Email = "sathish@xyzee.com";
            System.Web.Security.Membership.UpdateUser(userDetails);  // getting access denied error here
        }

Мой вопрос:

  1. Нужны ли мне соответствующие привилегии для обновления адреса электронной почты до AD?

  2. Есть ли у нас какие-либо атрибуты для проверки моего текущего уровня доступа?

  3. Можно ли программно выдать себя за привилегии для обновления адреса электронной почты?

1 Ответ

1 голос
/ 25 марта 2011

Если вы используете .NET 3.5 и выше, вы должны проверить пространство имен System.DirectoryServices.AccountManagement (S.DS.AM).Узнайте все об этом здесь:

Управление принципами безопасности каталогов в .NET Framework 3.5

По сути, вы можете определить контекст домена и легко находить пользователей и / или группыв AD:

// set up domain context for your current, default domain
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find user by name
string userName = "sathish";
UserPrincipal user = UserPrincipal.FindByIdentity(userName );

// if user is found - update it's e-mail address and save
if(user != null)
{
   user.EmailAddress = "sathish@xyzee.com";
   user.Save();
}

Новый S.DS.AM позволяет очень легко играть с пользователями и группами в AD:

...