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

标签 asp.net windows wif

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

  1. 他建立了某种 ASP.net 网络应用程序,用户可以在其中使用定制的登录系统登录。在后台,Web 应用程序将用户作为 Active Directory 中的用户登录。

  2. 用户登录。

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

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

我们希望将我们的一个应用程序设置为完全按照 1)、2) 和 3) 中所述的方式运行。但是,我所看到的有关 Windows Identify Foundation 的所有文档都是关于 Cardspace 和 Federated Security 的。我们现在对使用这两种技术中的任何一种都没有兴趣。

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

是的,我们已经尝试了 ActiveDirectoryMembershipProviderForms Authentication,但实际上访问网络上的资源需要在每个页面上进行模拟,这完全是一种拼凑!

UPDATE 2010 年 1 月 7 日。好吧,我已经为此工作了一段时间,但我设法想出的一切都达不到我想要实现的目标。也许我想要的功能在 WIF 的发布版本中没有。

这就是我现在的位置。我在 MSDN 上找到了一些文档,指出在 ASP.net 中使用了三种不同的身份:HttpContext.Current.User 指定的身份,Thread.CurrentPrincipal< 指定的身份,最后是 WindowsIdentity.GetCurrent 指定的标识。 link

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

澄清一下,获取表示已登录用户(使用魔笛歌曲登录)的 WindowsIdentity 没有任何问题。问题是我无法使用 WindowsIdentity 为我的用户执行 SQL 查询。

最佳答案

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

即使它确实因为委派而映射,如果您想使用 IIS 正在模拟的 AD 身份,您也总是必须委派 - 这就是它的工作方式,除非您设置 Kerberos delegation对于 IIS

关于asp.net - 使用 Windows Identity Foundation 将某人登录到 ASP.net 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1958596/

相关文章:

asp.net - 无法访问 Azure Web App 上的 SQLite DB

c# - C# 中的多重继承 - 再次

java - 无法在 AMD 64 位平台上加载 IA 32 位 .dll

c# - Azure 上的 WCF 与 STS

javascript - 使用页面方法实现 Datalist 删除命令事件

c# - 汉诺塔 : Moving Rings from Peg to Peg

.net - .NET 6.0 可以安装在 Windows 2012 R2 上吗?

asp.net - 在 MVC5 中使用现有用户数据库进行复杂的身份验证

c# - 将安全 token 从一个依赖方委托(delegate)给另一个依赖方

asp.net - 在 ASP.NET 中自动生成机器 key