C# intranet的域用户自动身份验证

C# intranet的域用户自动身份验证,c#,asp.net,iis,reporting-services,C#,Asp.net,Iis,Reporting Services,我正在开发一个内部网应用程序。应用程序正在windows server 2008上的IIS上工作。我正在使用C#编写ASP.NET 因此,我只想允许作为OU ICT成员的域用户。 我不需要登录表单,只需要自动身份验证 Sql Server Reporting Services的工作原理如下。用户无需登录,安全性基于广告。->这正是我想要的 我试过几种方法,比如WidowsImpersonationContext,我在OU上遇到了死胡同 如果有人能帮助我,我将非常感激 解决了我检查用户是否在组/o

我正在开发一个内部网应用程序。应用程序正在windows server 2008上的IIS上工作。我正在使用C#编写ASP.NET

因此,我只想允许作为OU ICT成员的域用户。 我不需要登录表单,只需要自动身份验证

Sql Server Reporting Services的工作原理如下。用户无需登录,安全性基于广告。->这正是我想要的

我试过几种方法,比如WidowsImpersonationContext,我在OU上遇到了死胡同

如果有人能帮助我,我将非常感激

解决了我检查用户是否在组/ou中的部分

但是我无法在不登录的情况下从客户端计算机获取windows用户。
你好,杰夫

我不确定这里的OU和组之间的混合情况,但也许以下内容会对你有所帮助:

参考系统.DirectoryServices.AccountManagement

var pc=newprincipalcontext(ContextType.Domain);
var user=UserPrincipal.FindByIdentity(pc,IdentityType.SamAccountName,“域\\用户”);
var g=System.DirectoryServices.AccountManagement.GroupPrincipal.FindByIdentity(pc,IdentityType.DiscrimitedName,“每个人”);
var check=user.IsMemberOf(g);

Dominik

只是为了检查用户是否在OU中,这不是太麻烦了吗?我必须在IIS上使用什么身份验证?只有windows还是匿名?@Jeff,如果您可以将OU中的所有用户放入特定的AD组,则可以使用windows身份验证,然后再加上
WindowsPrincipal.IsInRole
方法来执行访问控制。@VinayC感谢您提供的提示,如果我在visual studio上调试IsInRole,但它在IIS上不工作,则会引发System.InvalidOperationException:异常匿名身份无法执行模拟。在WindowsImpersonationContext上wic=wi.Impersonate();Sill我如何在登录信息表单中输入登录名和用户名的情况下让用户通过身份验证而不匿名..我使用此代码得到的部分:WindowsPrincipal myPrincipal=new WindowsPrincipal((WindowsIdentity)HttpContext.Current.user.Identity);如果(myPrincipal.IsInRole(@“域\组”){}