【发布时间】:2015-09-27 18:38:34
【问题描述】:
我在负载平衡器后面有 2 个 Web 服务器。我在不同的 VM 中有一个单独的 STS(带有 WIF 的安全令牌服务应用程序)应用程序。
当用户尝试登录时,用户在 Web 应用程序的登录页面中输入组织,这会将用户(此处发生家庭领域发现)重定向到 STS 应用程序以输入用户名和密码。 STS 在登录过程中与 ADFS 服务器通信。一旦用户从 STS 应用程序单击登录,就会创建安全令牌并将其重定向到创建表单身份验证 cookie 并重定向到主页的 Web 应用程序。
这工作得很好。当用户导航到网站中的不同页面时,用户突然退出。当负载均衡器重定向到另一台服务器时会发生这种情况(如果我的登录发生在服务器 A 上,并且只要请求指向服务器 A 就可以了。但是一旦我的请求被负载均衡器定向到服务器 B,我退出)。
当我在非 STS 模式下运行应用程序(仅使用表单身份验证)时,它在上述场景中运行良好(当负载均衡器向两台服务器发送请求时用户不会注销)。两个 Web 服务器都具有相同的 asp.net MVC Web 应用程序副本,具有相同的机器密钥等。
所以这应该是一个与 STS 相关的问题。表单身份验证 cookie 存储“用户 ID”,一个 guid,以加载会话变量。根据应用程序日志,一旦请求被发送到不是用于登录的服务器的服务器,它就无法从 cookie 中识别用户 ID(如 guid 为空)。我是 STS 域的新手。这里我分享一下开发工具中显示的 cookie 详细信息。
这里发生了什么?是“FedAuth cookie”无法被最初创建的 Web 服务器的服务器解密吗?请帮忙!!!
登录后的cookies,
从 STS 应用程序重定向到登录 Web 应用程序时的 Cookie,
应用程序托管在 Azure 环境中
【问题讨论】:
-
Fed auth cookie 存储姓名/角色和电子邮件。
标签: asp.net-mvc-4 cookies forms-authentication wif