我有一个我认为相当复杂的问题,所以我会尽力在这里表达出来。
我正在寻找单点登录 (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 会在我们现有的环境中工作,还是有更好的方法?
如果您需要任何澄清,请告诉我。
编辑:
只是为了澄清我想要实现的目标(或者考虑到我所做的研究认为我想要实现的目标)是: