使用WIF在.NET Web Farm中为多个电子商务网站实施SSO?

ooP*_*ter 7 .net web-farm e-commerce wif single-sign-on

我认为这是一个相当复杂的问题,所以我会尽力在这里说清楚.

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

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

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

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是否会在我们现有的环境中工作,还是有更好的方法?

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

编辑:

只是为了澄清我希望实现的目标(或者我认为我正在努力实现的目标):

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

nzp*_*mad 2

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

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

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

如果没有,例如 Java,您将必须使用另一种解决方案(例如 OpenSSO / Ping Federate)保护它们,并将该产品与 ADFS 联合。

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

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

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

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

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