【问题标题】:Implementing SSO in a .NET Web Farm for several e-commerce websites with WIF?使用 WIF 在 .NET Web Farm 中为多个电子商务网站实施 SSO?
【发布时间】:2011-12-02 11:44:02
【问题描述】:

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

我正在寻找单点登录 (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:似乎它更倾向于暴露受保护的数据 通过网络服务。完全定制 (http://www.codeproject.com/KB/aspnet/CrossDomainSSOModel.aspx): 一个 完全定制的方法可能有太长的实施时间 这种方法更需要考虑安全性。
  • DotNetOpenAuth:依赖/基于 OpenID。

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

如果您需要任何说明,请告诉我。

编辑:

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

Current Setup (JPEG hosted on dropbox)
Desired Setup (JPEG hosted on dropbox)

【问题讨论】:

    标签: .net e-commerce single-sign-on wif web-farm


    【解决方案1】:

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

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

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

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

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

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

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

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

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

    【讨论】:

    • 网站都是.NET,没有经典。我对 ADFS 的理解是,Active Directory 是 STS 验证用户声明的来源(我可能弄错了)。如果是这种情况,那么 ADFS 就不是一个可行的选择,因为我们的会员数据与 AD 完全无关。可以在没有 AD 的情况下使用 WIF 吗?如果它不是ADFS,那么它可以不进行负载平衡吗?此外,我相信我们需要身份验证和授权,因为当用户通过身份验证时,某些页面的行为会有所不同。
    • 它的工作方式是将 STS(针对例如 SQL Server 进行身份验证)与 ADFS 联合。自定义 STS 可以针对您想要的任何内容进行身份验证。用于授权的属性可以来自 AD、SQL Server 或 LDAP 的任意组合。您不必使用 WIF / ADFS 进行授权。您可以将其简单地用于 SSO(身份验证)并保留您的授权码
    • 您的答案似乎是正确的,但您能否根据我在编辑中添加的图表确认这一点?请注意图中完全没有与 AD 相关的任何内容。谢谢!
    • OK - 所以您需要一个针对 SQL Server 进行身份验证的自定义 STS。看这里-identityserver.codeplex.com。顺便说一句,有一个 ADFS 代理服务器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多