C# ActiveDirectory получить PrincipalContext с "правами"

У меня есть небольшой веб-сервер, на котором работает 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 ответ

Это называется "олицетворением". Пока вы используете проверку подлинности 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)) {
        ...
    }
}
Другие вопросы по тегам