У нас есть. NET Core 2.2 Web Api, который использует Windows аутентификацию. Мы хотели бы создать страницу, на которой разные администраторы могут go входить и добавлять / удалять пользователей для указанных c групп AD. Мы не можем использовать служебную учетную запись или общую учетную запись c, поскольку в зависимости от того, кто вошел в систему, они смогут управлять различными группами.
Проблема в том, что когда я публикую sh в IIS, это удостоверение AppPools, которое обращается к AD, и ему отказывают. Как я могу сделать запрос к серверу LDAP как зарегистрированный пользователь, поскольку. NET Core не поддерживает олицетворение?
public UserApiModel AddGroupMember(string networkId, string groupName)
{
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "DOMAIN"))
{
GroupPrincipal group = GroupPrincipal.FindByIdentity(pc, groupName);
var canAdd = true;
var currentUsers = group.GetMembers();
foreach (var groupUser in currentUsers)
{
if (groupUser.SamAccountName == networkId)
{
canAdd = false;
break;
}
}
if (canAdd)
{
var usr = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, networkId);
if (usr != null)
{
group.Members.Add(pc, IdentityType.SamAccountName, "DOMAIN\\" + networkId);
group.Save();
return new UserApiModel
{
NetworkId = usr.SamAccountName,
Name = usr.DisplayName
};
}
else
return null;
}
return null;
}
}