我最近在这里问了一个问题:在。net Web Farm中用WIF为几个电子商务网站实现SSO ?这就概括了我下一个问题背后的细节。
问题/解决方案的简要总结是,一系列需要单点登录解决方案的网站可以使用WIF和自定义STS来实现,以根据某种类型的SQLMembershipProvider验证用户。在为这个系统开发图表时,另一个问题出现了。
web farm中web服务器的想法背后的目的是消除网站的单点故障(SPOF),从而实现更可靠的服务交付。数据库服务器和电子邮件服务器也有类似的策略。是否有可能在使用自定义STS和WIF的现有高可用性环境中不引入单点故障的情况下实现SSO解决方案?为了消除这个SPOF,需要实施哪些额外的步骤/策略?
或多或少的问题是:
- 可将自定义化粪池系统放置在负载均衡的环境中吗? WIF可以被放置在一个负载均衡的环境(不使用第三方实现如Azure)?
- 为了实现这一目标,需要解决哪些具体的技术问题(或者可以以与web服务器相同的方式完成)? 这是个好主意吗?有哪些潜在的问题?
我在网上做了相当多的研究,无法找到这个问题的完整答案。我对基于声明的身份验证和联邦身份还是个新手,所以如果我说得含糊不清,请原谅我。
我是在试着把方钉塞进一个圆孔里吗?
如果你需要任何澄清,请告诉我。
•自定义STS是否可以放置在负载均衡的环境中?
可以——尽管你可能需要"粘性会话"
•WIF可以被放置在一个负载均衡的环境(不使用第三方实现如Azure)?
WIF只是在VS项目中作为引用添加的一组。net类。它使应用程序能够启用声明。你不能"单独"部署WIF。您部署启用声明的应用程序。
•为了实现这一目标,需要解决哪些具体的技术问题(或者可以以与web服务器相同的方式完成)?
对于有服务器场的ADFS:备用联合服务器存储来自主联合服务器的AD FS配置数据库的副本,但这些副本是只读的。辅助联合服务器通过定期轮询主联合服务器以检查数据是否已更改,连接到场中的主联合服务器并与之同步数据。辅助联合服务器的作用是为主联合服务器提供容错性,同时对网络环境中不同站点发出的访问请求进行负载平衡。"
不确定这有多少是AFDS功能,多少是标准的SQL Server功能?您可以使用SQL Server配置两个或多个服务器作为服务器集群一起工作,以确保您的自定义STS对传入的客户端请求具有高可用性。
•这是个好主意吗?有哪些潜在的问题?
从记忆中,我们遇到的唯一问题是"粘性会话"问题。
另外,请参考ADFS 2.0高可用性和高弹性演练
更新:看一下编程Windows身份基础。问题是WIF会话cookie是由机器密钥保护的。维托里奥建议:
- <
- 粘会话/gh>
- 同步机器按键
- 在每台机器上使用SSL证书
书中有一节是关于开发定制STS的。
- 可将自定义化粪池系统放置在负载均衡的环境中吗?
没有理由不能将自定义STS部署到web farm中。被动联合端点只是一个网站,您的WIF依赖方在需要身份验证时将重定向到该网站。因此,您只需将STS网站的多个实例部署到web场。
- WIF可以被放置在一个负载均衡的环境(不使用第三方实现如Azure)?
正如nzpcmad所提到的,您需要在负载均衡环境中的依赖方应用程序之间同步机器密钥。由于SAML令牌是使用机器密钥加密的,因此应用程序需要使用相同的密钥对其进行解密。
- 为了实现这一目标,需要解决哪些具体的技术问题(或者可以以与web服务器相同的方式完成)?
见其他回复。
- 这是个好主意吗?有哪些潜在的问题?
是的,高可用性和冗余是一个非常好的想法。ADFS具有在web farm中工作的内置功能,但对于自定义STS,您只需要确保服务器之间STS的配置一致。如果可能的话,我建议将配置存储在数据库中。