도메인에 속하지 않고 Active Directory에서 사용자의 그룹 회원 자격을 얻고 싶습니다. 이것을 도메인 내부에서 실행하면 모든 것이 잘됩니다. 내가 도메인 외부 실행하면발신자가 도메인에없는 경우 AD에서 사용자의 역할을 요청하십시오.
var context = new PrincipalContext(ContextType.Domain);
var principal = UserPrincipal.FindByIdentity(context, IdentityType.Name, "administrator");
foreach (var authorizationGroup in principal.GetAuthorizationGroups())
{
Console.WriteLine(authorizationGroup.Name);
}
그러나, 나는 PrincipalContext이 거짓말을 지정해야합니다
var context = new PrincipalContext(ContextType.Domain, "10.0.1.255", "DC=test,DC=ad,DC=be", "administrator", "password");
이 코드를 실행하면 내가 principal.GetAuthorizationGroups()
을 실행할 때, 나는 예외를 얻을. 예외는 다음과 같습니다.
System.DirectoryServices.AccountManagement.PrincipalOperationException: Information about the domain could not be retrieved (1355).
at System.DirectoryServices.AccountManagement.Utils.GetDcName(String computerName, String domainName, String siteName, Int32 flags)
at System.DirectoryServices.AccountManagement.ADStoreCtx.LoadDomainInfo()
at System.DirectoryServices.AccountManagement.ADStoreCtx.get_DnsDomainName()
at System.DirectoryServices.AccountManagement.ADStoreCtx.GetGroupsMemberOfAZ(Principal p)
at System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroupsHelper()
at System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroups()
이 문제가 발생했습니다. "nslookup yourdomain"을 실행하면 DC로 해결됩니다. – T3hc13h