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)) {
...
}
}