7

我有一个我认为相当复杂的问题,所以我会尽力在这里表达出来。

我正在寻找单点登录 (SSO) 解决方案。我知道那里有许多选项,但是当我添加他们需要满足的标准时,我已经排除了其中的大部分。以下是标准:

1.) SSO 必须添加到现有的“系统”中。
2.) 现有的“系统”由“X”个网站组成。
3.) 所有“x”网站都是电子商务。
4.) 这些网站都归 Y 公司所有,其 95% 的系统是内部构建的。
5.) “X”个网站中的每一个都在同一个网络农场中。
6.) 所有网站都共享以下组件:

  • DAL(数据访问层)
  • 数据库(购物车、订单、用户、库存等...)
  • 身份验证(WebForms 和 MVC 中的表单身份验证)。

7.) 为了使当前环境正常工作,机器密钥已经在负载平衡服务器之间同步(并且已经同步了一段时间)。
8.) 由于流量 非常大,需要高可用性和稳定性。

所有这些标准都使我走上了 WIF 和自定义 STS 的道路,以便与我们现有的会员身份验证服务一起使用。OpenID 和其他开源解决方案似乎都倾向于跨公司的互操作性;这是不需要或不需要的。理想的解决方案将是 100% 内部的,并允许用户登录网站“1”,做他们想做的任何事情,然后转到网站“2”(也托管在负载均衡器后面,甚至可能在同一个网站上) Web 服务器,因为用户是网站“1”)并且已经登录。

这是我看过的替代方法列表以及排除它们的相应原因(或者我应该重新考虑其中一些替代方法吗?)。

  • OpenID:这被排除了有几个原因,主要是因为我的组织正在寻找“内部” SSO,并且不希望与外部网站集成或与外部网站一起使用的 ID 系统。
  • CAS:在大多数情况下,这似乎也是一个不错的选择。最终它被排除了,因为它使用的技术(Java、Apache、Maven 等)需要额外的努力和金钱来理解、实施、支持和扩展(主要是 .NET 商店)。
  • OAuth:似乎它更倾向于通过 Web 服务公开受保护的数据。完全自定义 ( http://www.codeproject.com/KB/aspnet/CrossDomainSSOModel.aspx ):完全自定义的方法可能执行时间太长,并且此方法更需要考虑安全性。
  • DotNetOpenAuth:依赖/基于 OpenID。

所以问题是:考虑到负载均衡器和跨网站已经共享的用户帐户数据,WIF 会在我们现有的环境中工作,还是有更好的方法?

如果您需要任何澄清,请告诉我。

编辑:

只是为了澄清我想要实现的目标(或者考虑到我所做的研究认为我想要实现的目标)是:

当前设置(JPEG 托管在 Dropbox 上)
所需设置(JPEG 托管在 Dropbox 上)

4

1 回答 1

2

ADFS v2.0 仅针对 AD 进行身份验证。如果您当前的身份验证方法是其他方法(例如 SQL Server),那么您需要自定义 STS。

这些应用程序都是 ASP.NET 吗?

如果是这样,它们都需要使用 WIF 启用声明。

如果不是,例如 Java,您将不得不使用另一种解决方案来保护它们,例如 OpenSSO / Ping Federate 并将该产品与 ADFS 联合。

如果是经典 ASP,有一些方法可以让 ADFS 处理身份验证,但授权是个问题。这些角色将位于 Classic ASP 无法访问的声明对象中。您也可以为此使用 C2WTS。

您是否正在查看身份验证或授权或两者兼而有之?ADFS 在声明对象中提供角色,因此您的程序中的现有授权机制可能必须更改。

您可以对 ADFS 站点进行负载平衡。

ADFS 当然可以在您的所有站点上启用 SSO。它还可能允许您与其他站点/组织联合,并通过 Azure ACS 使用外部凭据(例如 Facebook),如果这是您将来需要考虑的事情。

它还允许您与 SharePoint 2010、CRM Dynamics 2010 和 Office 365 集成,所有这些都已启用声明。

于 2011-10-06T19:59:05.067 回答