1

我最近在这里问了一个问题:在 .NET Web Farm 中为几个使用 WIF 的电子商务网站实现 SSO? 这概述了我下一个问题背后的细节。

问题/解决方案的简要总结是,可以使用带有自定义 STS 的 WIF 来实现一系列需要 SSO 解决方案的网站,以针对某种 SQLMembershipProvider 验证用户。在为该系统开发图表时,出现了另一个问题。

网络场中的网络服务器理念背后的目的是消除网站的单点故障 (SPOF),从而实现更可靠的服务交付。类似的策略在数据库服务器和电子邮件服务器上都有很好的记录。是否可以使用自定义 STS 和 WIF 实施 SSO 解决方案,而不会在现有高可用性环境中引入单点故障?为了消除此 SPOF,需要实施哪些额外的步骤/策略?

或多或少的问题是:

  • 可以将自定义 STS 放入负载均衡的环境中吗?
  • 是否可以将 WIF 置于负载平衡的环境中(不使用 Azure 等第三方实现)?
  • 为了实现这一点,需要解决哪些具体的技术问题(或者可以像 Web 服务器一样完成)?
  • 这是个好主意吗?有哪些潜在问题?

我在网上做了很多研究,无法找到这个问题的完整答案。我对基于声明的身份验证和联合身份仍然很陌生,所以如果我含糊不清或迟钝,请原谅我。

我是否要在圆孔中安装方形钉?

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

4

2 回答 2

1

• 可以将自定义 STS 放入负载均衡的环境中吗?

是的 - 尽管您可能需要“粘性会话”

• WIF 是否可以放置在负载平衡的环境中(不使用 Azure 等第三方实现)?

WIF 只是一组 .NET 类,作为 VS 项目中的引用添加。它使应用程序能够支持声明。您不能“单独”部署 WIF。您部署启用声明的应用程序。

•为了实现这一点,需要解决哪些具体的技术问题(或者可以像网络服务器一样完成)?

对于具有服务器场的 ADFS:“辅助联合服务器存储来自主联合服务器的 AD FS 配置数据库的副本,但这些副本是只读的。辅助联合服务器连接到主联合服务器并与主联合服务器同步数据“通过定期轮询它来检查数据是否已更改。辅助联合服务器的存在是为了为主联合服务器提供容错能力,同时对整个网络环境中不同站点中发出的访问请求进行负载平衡。”

不确定其中有多少是 AFDS 功能,多少是标准 SQL Server 功能?您可以使用 SQL Server 配置两台或多台服务器作为服务器集群一起工作,以确保您的自定义 STS 高度可用以服务传入的客户端请求。

•这是个好主意吗?有哪些潜在问题?

根据记忆,我们遇到的唯一问题是“粘性会话”问题。

另外,请参阅ADFS 2.0 高可用性和高弹性演练

更新:看看Programming Windows Identity Foundation。问题是 WIF 会话 cookie 受机器密钥保护。维托里奥建议:

  • 粘性会话
  • 同步机器密钥
  • 在每台机器上使用 SSL 证书

书中有一节是关于开发自定义 STS 的。我推荐它。

于 2011-10-10T20:04:36.107 回答
1
  • 可以将自定义 STS 放入负载均衡的环境中吗?

您没有理由不能将自定义 STS 部署到网络场中。被动联合端点只是您的 WIF 依赖方在需要进行身份验证时将重定向到的网站。因此,您只需将 STS 网站的多个实例部署到网络场中。

  • 是否可以将 WIF 置于负载平衡的环境中(不使用 Azure 等第三方实现)?

正如 nzpcmad 所提到的,您需要在负载平衡环境中的依赖方应用程序之间同步机器密钥。由于 SAML 令牌是使用机器密钥加密的,因此应用程序需要使用相同的密钥对其进行解密。

  • 为了实现这一点,需要解决哪些具体的技术问题(或者可以像 Web 服务器一样完成)?

查看其他回复。

  • 这是个好主意吗?有哪些潜在问题?

是的,高可用性和冗余是一个非常好的主意。ADFS 具有在网络场中工作的内置功能,但对于自定义 STS,您只需确保 STS 的配置在服务器之间保持一致。如果可能,我建议将配置存储在数据库中。

于 2011-10-11T13:04:00.343 回答