Использование System.DirectoryServices.AccountManagement с доменными службами Novell для Windows - PullRequest
0 голосов
/ 20 марта 2020

У нас есть приложение, которое основано на Active Directory для его аутентификации, и мы пытаемся реализовать его на клиенте, который использует Novell eDirectory (или, я полагаю, сейчас NetIQ). Они установили функцию Доменные службы для Windows, который, согласно техническому документу, должен имитировать аутентификацию Active Directory и запросы LDAP, которые фактически поддерживаются их eDirectory. Однако я не могу заставить это работать.

Вот фрагмент кода PowerShell, который я извлек из нашей C# базы кода, который копирует то, что мы пытаемся сделать:

$domain = New-Object System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Domain, "dsfw.domain.local", "DC=domain,DC=local")
$user = [System.DirectoryServices.AccountManagement.UserPrincipal]::FindByIdentity($domain, "Administrator")
$user.GetAuthorizationGroups()

В настоящей системе Active Directory мне не нужно указывать имя сервера или путь к контейнеру LDAP, но попытка сделать это на этом сервере, который «присоединен» к домену DSfW, не работает. Если я укажу эти параметры, как показано, я, по крайней мере, смогу найти подходящего пользователя, но любая попытка получить группы пользователей вернет пару групп, а затем рано завершится с ошибкой 0x8000005c. Я пытался GetAuthorizationGroups, GetGroups, и даже используя DirectorySearcher, все делают одно и то же:

$user.GetAuthorizationGroups() | Format-Table IsSecurityGroup,DisplayName,SamAccountName

IsSecurityGroup DisplayName                      SamAccountName
--------------- -----------                      --------------
           True GLOBAL\Everyone                  Everyone
           True NT AUTHORITY\Authenticated Users Authenticated Users
An error occurred while enumerating through a collection: Unknown error (0x8000500c).

Я достаточно далеко, чтобы понять, что ошибка возникает из-за какого-то не удалось преобразовать нативные типы в типы DS, но я не могу понять, какой тип (типы) является проблемой или откуда он загружается. Что еще более важно, я не могу понять, как обойти проблему. Все, что меня действительно волнует, это SamAccountName группы, поэтому, если бы я мог как-то сказать LDAP игнорировать все остальное, я чувствую, что это сработает, но я не могу понять, как.

У кого-нибудь есть опыт работы с DSfW, который может указать мне правильное направление?

...