1

场景:一些网站必须通过我公司外联网上的 iframe 显示。Extranet 使用 SSL 和基于 Active Directory 的 Windows 身份验证。每个 iframe 的网站都需要经过身份验证的用户,但要求用户不应被要求手动登录。每个网站的身份验证机制尚未确定。

问题:我需要了解如何在 iframe 中完成自动登录。我可以要求 iframe 的网站使用适合我目的的特定身份验证机制,尽管我确实需要向它们提供来自 AD 的特定用户信息。

有人建议我使用 Windows Identity Foundation 来解决身份验证挑战。我正在考虑两种解决方案,但作为 WIF 新手,我不确定哪个更好,以及它们是否可能。

解决方案 1:我使用 AD 声明创建自定义安全令牌服务。当用户浏览到我的 iframe 页面时,该页面以编程方式从 STS 获取令牌,并以某种方式将令牌添加到 iframe。查看网上的示例,我相信我了解如何构建 STS 并以编程方式获取令牌。但是如何将它与 iframe 一起使用?将其插入 iframe URL ( http://website/default.aspx?token=xxx) 似乎不安全。

解决方案 2:我创建了相同的 STS。iframe 的网站配置为使用 STS 作为身份验证提供程序。当用户浏览到我的 iframe 页面之一时,iframe 的网站会自动查询 STS 以获取令牌,并将用户登录。但是 iframe 的 Web 部件如何获取令牌 - 原始用户是否可用请求上下文,或者它是如何工作的?这完全可以在 iframe 中完成吗?我记得读过一些关于 iframe 中不允许使用 cookie 的内容?

对上述问题的回答 - 或者可能是不同的解决方案 - 是最受欢迎的。

4

1 回答 1

2

寻求解决方案#2。如果 iframe 中的页面(从现在起为依赖方 - RP)配置为使用 STS 作为身份验证提供程序,那么在首次加载时,它们会将浏览器(iframe)重定向到 STS。STS 知道用户已经有一个单点登录会话(从最初登录到外联网),因此发出一个会话令牌,它作为 HTTP POST 交付给依赖方,被 WIF 截获并以以下形式交付给客户端cookie(默认情况下,但可以使用自定义会话令牌处理程序覆盖)。一些浏览器最初不允许在 iframe 中使用 cookie,但通过在来自依赖方的响应中发送 p3p 标头,可以允许这样做。

于 2013-01-25T13:10:13.777 回答