6

我办公室的主管告诉我,他看到了一个使用 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 识别基础的文档都是关于 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 查询。

4

2 回答 2

5

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

即使由于委派而映射,如果您想使用 IIS 模拟的 AD 身份,您总是必须委派 - 这就是它的工作原理,除非您为 IIS设置Kerberos 委派

于 2009-12-26T08:40:40.143 回答
1

您可以使用 ASP.net 中的身份模拟来实现相同的目的。您还需要为您的 Web 应用程序启用 Windows 集成身份验证。这将解决目的。如果登录用户没有访问资源所需的权限,您将获得必须处理的安全异常。

于 2009-12-26T09:43:39.110 回答