4

我正在努力弄清楚为什么ClaimsPrincipal只有 7 个声明会FedAuth从 FAM 生成 5 个 Cookie(FedAuth1、FedAuth2、FedAuth3、FedAuth4)。

这会导致问题,因为 Safari 正在截断我的 cookie 并且我的 mac 用户无法登录。

有什么想法为什么我可能会遇到这种情况,或者我可以在哪里找到答案?

更新:正如 Eugenio 所指出的,设置 SaveBootstrapTokens=false 将 cookie 从 5 缩小到 2,现在 safari 用户可以登录。

4

2 回答 2

6

这些声明包含什么?声明的数量将影响令牌的大小,但它们拥有的信息也会影响。FedAuthx cookie 本质上是整个令牌(更具体地说是SessionToken),经过加密和分块。

作为替代方案,您可以考虑使用 WIF“会话模式”,它将令牌存储在服务器端。权衡是必须管理服务器端状态及其后果(例如,跨网络农场的状态等)

更新: 您可以使用附加配置控制每个 cookie 的大小。最小大小为 1000,但您无法控制 cookie 的总量。

<cookieHandler requireSsl="false" mode="Chunked">
  <chunkedCookieHandler chunkSize="1000"/>
</cookieHandler>

文章中提到的解决方法似乎与上面解释的“会话模式”开箱即用的 WIF 类似。我建议使用这种方法而不是自定义方法。Vittorio 的文章解释得很好:http: //blogs.msdn.com/b/vbertocci/archive/2010/05/26/your-fedauth-cookies-on-a-diet-issessionmode-true.aspx

于 2011-08-28T17:28:16.213 回答
2

cookie 限制是 WIF 和 Safari 的一个已知问题。在此处查看官方错误报告和解决方法,这有助于限制令牌的大小:

http://connect.microsoft.com/site642/feedback/details/573602/wif-session-cookies-are-truncated-when-combined-size-4000-bytes-in-safari-and-opera

于 2011-08-29T13:15:24.767 回答