用于Web SSO的自定义STS

时间:2012-12-03 04:40:01

标签: .net-4.0 wif saml-2.0

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

在我们的场景中,重要的是用户在决定访问第三方网站时已经在我们的网站上进行了身份验证。

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

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

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

实现自己的IdP并不简单(有一些specifications需要了解),所以除非你把它作为一个开发项目,否则你可能需要考虑像Microsoft ADFS这样的COTS, PortalGuard(我为之工作)或Ping身份。

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

答案 1 :(得分:0)

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

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

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

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