GetAuthorizationGroups仅对管理员用户有效

本文关键字:用户 有效 管理员 GetAuthorizationGroups | 更新日期: 2023-09-27 18:18:53

我在Intranet中的网站(使用Windows身份验证)使用一些DLL来检查Active Directory中当前用户的权限。它使用GetAuthorizationGroups方法并且工作得很好。这个DLL是大约10年前在vs2005中编译的。现在我需要对其代码(未连接到Active Directory)进行一些更改。我在VS 2012, framework 3.5中打开源代码,编译后复制到网站的服务器上。现在,不属于此服务器的Administrators组的用户得到错误:尝试检索授权组时,发生错误(5)有n 0错误与旧版本的DLL或当用户是管理员r。下面是我使用的代码:

PrincipalContext ctx =新PrincipalContext (ContextType。域名,域名,adusername, adpassword);
UserPrincipal用户=UserPrincipal。FindByIdentity (ctx, userID);
PrincipalSearchResult groups = user.GetAuthorizationGroups();

服务器工作在Windows server 2012下。

GetAuthorizationGroups仅对管理员用户有效

您的代码为我工作,我已经在。net 3.5中编译并将userID替换为adusername,尝试通过传递IdentityType作为参数(如下所示)。

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, domainName,
adusername, adpassword);
UserPrincipal user = UserPrincipal.FindByIdentity
(ctx, IdentityType.SamAccountName, adusername);
PrincipalSearchResult groups = user.GetAuthorizationGroups();

你需要添加上下文,这是运行作为(机器帐户,如果应用程序池是网络服务)到Windows授权访问组在AD。这将授予请求者对相关属性的读访问权。