1

我们有一个面向 Internet 的 Web 应用程序正在运行,最近我们公司与拥有另一个网站的第三方公司达成了一些协议。我们的想法是为我们当前的客户提供对这个外部网站的访问。我们的用户将单击我们解决方案中的内部链接,该链接将打开一个带有第三方站点的新浏览器窗口。用户无需在第 3 方公司站点再次进行身份验证。我们已同意为我们的用户发行 SAML2 代币,其中包含一组第三方网站用于查询向我们的用户呈现个性化视图的声明

在我们的场景中重要的是,当用户决定访问第 3 部分网站时,他们已经在我们的网站中进行了身份验证。

实现这一切的最佳方式是什么?我正在考虑使用 WIF SDK 实现自定义 STS 以生成这些 SAML2 令牌,然后使用 HTTP POST (cookie) 将其传递给第 3 方站点。如果这是正确的方法,那么任何指针,提示?ADFS 会有什么不同吗?

谢谢你的帮助

4

2 回答 2

1

听起来您将扮演身份提供者的角色 - 负责处理用户的“手动”身份验证并生成 SAML 响应以将用户 SSO 提供给第 3 方网站。

实现自己的 IdP 并非易事(需要了解一些规范),因此除非您将其作为一个开发项目,否则您可能需要考虑像 Microsoft ADFS、PortalGuard(我为他们工作)这样的 COTS或 Ping 身份。

由于您专门询问了 ADFS,它对作为用户存储库的 Active Directory 提供本机支持,并且其声明转换引擎具有一些有趣的功能(如果您遇到复杂的 SP-IdP 链接场景)。除了 SAML,它还支持 WS-Federation,这对于与 Microsoft 堆栈中的其他产品集成非常重要。

于 2012-12-03T17:55:09.777 回答
0

如果您的应用程序是 ASP.NET,则将您的应用程序连接到 ADFS。

因此,要访问您的应用程序,用户必须登录。

然后对于到第 3 方应用程序的链接,请使用 IDP 启动方案(IdpInitiatedSignOnPage 类概述)。这会将 SAML2 令牌发送到第 3 方应用程序。ADFS 将为您处理 SSO。

为此,您必须将第 3 方应用程序配置为 SAML 应用程序而不是 WS-Fed 应用程序。

于 2012-12-03T18:25:53.273 回答