6

鉴于 Web 应用程序(.NET 3.5+)的想法

  • 浏览器
  • 网络应用

使用表单的身份验证将产生类似的代码行

FormsAuthentication.SetAuthCookie(strUsrNm, True)

这在非负载平衡的服务器实例中很好。身份验证如何在负载平衡的情况下工作(无粘性会话/无限),并且您无法在浏览器中存储客户端 IP、用户密码或登录名。

  • 浏览器
  • 负载均衡器
  • Web 应用程序(在服务器 1 上)|| Web 应用程序(在服务器 2 上)

限制:没有数据库会话,没有 AD 服务器(例如:迎合外部用户)

简而言之 - 在负载平衡的情况下,如果用户在没有重新验证的情况下对另一台服务器进行了身份验证,应用程序如何知道用户是谁。

谢谢

4

1 回答 1

18

如果您使用 cookie,所有服务器都将知道经过身份验证的用户,因为身份验证票证存储在 cookie 中。任何服务器都将收到此 cookie,并能够解密票证并对用户进行身份验证。

在这里,您可以了解有关表单身份验证如何工作的更多详细信息。

此外,您必须确保场中的所有服务器共享用于加密和解密的机器密钥。

如果您将应用程序部署在 Web 场中,则必须确保每个服务器上的配置文件共享相同的 validationKey 和 decryptionKey 值,分别用于散列和解密。这是必需的,因为您无法保证哪个服务器将处理连续的请求。

使用手动生成的键值,设置应类似于以下示例。

的<machineKey
的validationKey = “21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7 AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B”
decryptionKey = “ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F”验证= “SHA1”解密= “AES”/>

这里有更多细节

于 2011-02-24T12:08:39.950 回答