GetAuthorizationGroups仅适用于管理员用户

时间:2015-10-23 09:43:55

标签: c# web permissions active-directory

Intranet中的我的网站(使用Windows身份验证)使用一些DLL来检查Active Directory中的当前用户权限。它使用方法GetAuthorizationGroups并且完美地工作。该DLL大约10年前在VS 2005中编译。现在我需要对其代码进行一些更改(未连接到Active Directory)。我在VS 2012中打开了源代码,框架3.5,编译并复制到网站的服务器。现在,不属于此服务器的Administrators组的用户会收到错误:  尝试检索授权组时,发生错误(5) 旧版本的DLL或用户是administrato 时,n o错误。 以下是我使用的代码:

PrincipalContext ctx =  新的PrincipalContext(ContextType.Domain,domainName,adusername,adpassword);
UserPrincipal user =    UserPrincipal.FindByIdentity(ctx,userID);
PrincipalSearchResult groups = user.GetAuthorizationGroups();

服务器在Windows Server 2012下运行。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

我的代码适用于我在.net 3.5中编译并用adusername替换userID,尝试将IdentityType作为参数传递(如下所示)。

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

答案 1 :(得分:0)

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