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下运行。 任何帮助将不胜感激。
答案 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授权访问组。这授予请求者对相关属性的读访问权限。