C # ActiveDirectory получить PrincipalContext с «правами» - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть небольшой веб-сервер, на котором работает ASP.NET MVC.Сервер работает с пользователем «abc», но у пользователя «abc» нет прав на «изменения» в ActiveDirectory.

Поэтому я должен передать имя пользователя в PrincipalContext с помощью.

using (PrincipalContext context = new PrincipalContext(ContextType.Domain, null, user, password))
{

    GroupPrincipal theGroup = GroupPrincipal.FindByIdentity(context, groupId);

    theGroup.Members.Add(context, IdentityType.SamAccountName, userId);

    theGroup.Save();

}

Код работает.Но я не люблю переносить пароль из Methode в Methode ... => в MVC У меня есть SSO, и сервер знает меня

System.Web.HttpContext.Current.User.Identity

Можно ли использовать эту информацию?

new PrincipalContext(ContextType.Domain, null, [System.Web.HttpContext.Current.User]) ???

Или я ДОЛЖЕН дать пароль.И как лучше всего переходить от взгляда к этому методу.

спасибо

1 Ответ

0 голосов
/ 22 ноября 2018

Это называется "подражанием".Пока вы используете аутентификацию Windows, вы можете сделать это с помощью метода WindowsIdentity.Impersonate():

using (var ctx = ((WindowsIdentity) HttpContext.Current.User.Identity).Impersonate()) {
    // Anything done here will use the user's credentials
    using (var context = new PrincipalContext(ContextType.Domain)) {
        ...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...