我计划实现一个面向外部的 ASP.NET Web 应用程序以及一个提供外部可用 API 的 Windows Communication Foundation (WCF) 服务。我将通过使用 Windows Identity Foundation (WIF) 滚动我自己的安全令牌服务 (STS) 来为 Web 应用程序和服务提供安全性。
这些文章描述了我打算如何实现这一点的基础知识:http: //msdn.microsoft.com/en-us/magazine/ee335707.aspx 和 http://devproconnections.com/development/generating-saml-tokens -wif-part-2
结合 Vittorio Bertocci 关于该主题的优秀书籍提供的信息: http ://www.amazon.com/Programming-Windows-Identity-Foundation-Dev/dp/0735627185/ref=sr_1_6?ie=UTF8&qid=1366300926&sr=8- 6&keywords=维托里奥+贝托奇
我应该拥有完成这项任务所需的所有工具和信息。该应用程序的用例如下:用户登录到我们拥有的 ASP .NET Web 应用程序,包括用户身份验证和授权机制。在此应用程序上,他们单击一个链接,该链接使用 SAML 单点登录 (SSO) 到第三方应用程序(与我们有紧密的业务关系)。在这个第三方应用程序上,用户可以透明地处理我们存储在我们组织内部的另一个应用程序上的文件。基本上,他们将对我的 Web 应用程序/WCF 服务执行透明/静默 SAML SSO,以便在登录到第三方 Web 应用程序时保存或检索文档。
就像我之前说的,我想我已经掌握了如何为这个过程实现授权和身份验证的基础知识。
但是,我的安全团队提出的一项要求是,我们确保从外部公开但完全归我们所有的原始 Web 应用程序登录到第三方站点的用户,具有与外部站点的活动会话. 简而言之,我们需要确保该用户实际登录到站点 A,正在使用站点 B,但希望通过确保他们实际上仍然登录到站点 A 来访问站点 C 上的资源。
我将如何获得有关该用户的这些信息?现在,我确实为站点 A 推出了自己的角色提供程序,但身份验证是通过表单身份验证使用较旧的用户名/密码机制执行的,该机制不包括使用 ASP .NET 2.0“标准”成员资格提供程序。因此,我无法使用 Security.Web.Membership。
最后,同样的过程将适用于我们活动目录上的内部用户,他们将从我们的内部网络登录到站点 B,然后再次使用站点 C。我相信我们将使用 ADFS v2 进行身份验证。在针对站点 C 进行身份验证之前确保所述用户在 AD 中处于活动状态的任何提示?