我办公室的主管告诉我,他看到了一个使用 Microsoft“Geneva”(现为 Windows Identity Foundation)预发布版本的演示,其中开发人员做了以下操作:
他设置了某种 ASP.net Web 应用程序,用户可以在其中使用定制的登录系统登录。在后台,Web 应用程序将用户作为 Active Directory 中的用户登录。
用户登录。
用户登录后,ASP.net Web 应用程序线程在用户会话期间以登录用户身份运行,并且可以访问网络上的资源(例如在访问受 Active Directory 控制的表上运行 SQL 查询)
步骤 2) 和 3) 与使用 IIS 中网站设置的“目录安全”选项卡中的“集成 Windows 身份验证”设置完全相同。步骤 1) 不同,因为我们使用的是自定义登录系统,而不是 Kerberos 身份验证。
我们希望将我们的应用程序之一设置为完全按照 1)、2) 和 3) 中的描述运行。但是,我看到的所有关于 Windows 识别基础的文档都是关于 Cardspace 和 Federated Security 的。我们现在对使用这些技术中的任何一种都没有兴趣。
我们只是希望能够让用户在幕后登录到 Active Directory 帐户。
是的,我们已经尝试过ActiveDirectoryMembershipProviderwith Forms Authentication,但它是一个完整的组合,可以实际访问需要在每个页面上模拟的网络上的资源!
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 查询。