【问题标题】:Large FedAuth Cookie (FedAuth4) with only 7 claims仅包含 7 个声明的大型 FedAuth Cookie (FedAuth4)
【发布时间】:2011-11-05 09:21:43
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: federated-identity wif


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 在我看来,索赔很小 - 我认为这里有问题是我在我的 RP 中对身份的全套索赔:
    • 我在 accounts.climbfind.com 运行我自己的基于 ThinkTechture.IdentityServer 的 STS - 我的 RP 是 cf4.climbfind.com
    • 有没有办法让我连接到 wif 并将 nameidentifier 声明设置为我的用户 ID,这样我就可以放弃我的自定义用户 ID 声明(减少到 6 个声明)
    • 顺便说一句 Eugenio,感谢您在 WIF 相关帖子上总是表现出色!
    • 你是否有机会保存引导程序?我用你的声明集写了一个简单的测试用例,我只看到 2 个 FedAuth cookie。如果我设置“savebootstraptoken=true”,那么它会跳转到 4;这是有道理的,因为您基本上将信息翻了一番。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-06-16
      • 2016-06-18
      • 2019-03-12
      • 2021-12-27
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-22
      相关资源
      最近更新 更多