使用Windows Identity Foundation将某人登录到ASP.net应用程序

Dan*_*don 6 windows asp.net wif

我在办公室的主管告诉我,他看到了一个演示版,其中包含预发布版本的Microsoft"Geneva"(现在是Windows Identity Foundation),其中开发人员执行了以下操作:

  1. 他设置了某种ASP.net Web应用程序,用户可以使用自定义登录系统登录.在幕后,Web应用程序将用户作为Active Directory中的用户登录.

  2. 用户登录.

  3. 用户登录后,ASP.net Web应用程序线程在用户会话期间以登录用户身份运行,并可以访问网络上的资源(例如在访问受控Active Directory的表上运行SQL查询)

步骤2)和3)与在IIS中的网站设置的"目录安全性"选项卡中使用"集成Windows身份验证"设置完全相同.步骤1)是不同的,因为我们使用自定义登录系统而不是Kerberos身份验证.

我们希望将我们的一个应用程序设置为完全按照1),2)和3)中的描述进行操作.但是,我见过的关于Windows Identify Foundation的所有文档都是关于Cardspace和Federated Security的.我们现在对使用这些技术中的任何一种都没有兴趣.

我们只是希望能够在幕后将用户登录到Active Directory帐户.

是的,我们已尝试ActiveDirectoryMembershipProvider使用Forms Authentication,但它实际上是一个完整的kludge实际访问网络上需要模拟每个页面的资源!

更新2010年1月7日.好的,我已经在这方面工作了一段时间,而我设法提出的所有内容都达不到我想要实现的目标.也许我想要的功能不在WIF的发布版本中.

这就是我现在所处的位置.我在MSDN上发现了一些文档,表明在ASP.net中使用了三种不同的身份:指定HttpContext.Current.User的身份,指定的身份Thread.CurrentPrincipal,最后指定的身份WindowsIdentity.GetCurrent. 链接

在我想要使用我想要设计的过程的一个示例中,我想以登录用户身份执行SQL查询.在我的调试器中,我看到我轻松地将HttpContext和Thread用户设置为登录用户.但是,当我使用Windows身份验证连接到SQL服务器时,它总是始终以WindowsIdentity.GetCurrent用户身份连接,并且该用户始终始终是ASP.net进程的标识,除非我使用带有模拟的Windows身份验证.我绝对不能在我的应用程序中使用Windows身份验证,因为我的用户必须通过播放魔笛歌曲登录,而Windows身份验证不支持使用魔笛歌曲登录.

为了澄清,获得WindowsIdentity代表登录用户(使用魔笛歌曲登录)没有任何问题.问题是我无法使用它WindowsIdentity来为我的用户执行SQL查询.

blo*_*art 5

WIF允许您对其进行配置,使基于声明的身份映射到AD帐户,声明可以是联合身份声明,也可以通过信息卡传递.c2WTS执行此功能.

即使它因为委托而映射你也总是必须委托如果你想使用AD身份IIS模仿 - 这就是它的工作方式,除非你为IIS 设置Kerberos委派