Shibboleth 添加 _opensaml cookies 导致 HTTP 标头大小>8k

问题描述 投票:0回答:2

我有一个使用 Shibboleth 进行身份验证的应用程序。上线后,我们开始看到客户在浏览器中遇到 500 个错误。经过调查,我们发现我们的安全协议阻止了任何超过 8k 限制的 HTTP 响应标头。一旦我们将限制增加到 16K,问题就停止了。

必须根据政策重新设置安全协议。当我们开始分析用户流量时,我们开始看到添加了以下 cookie,这些 cookie 导致 HTTP 标头大小增加:

 _opensaml_req_ss%3Amem%3A937e520c9e0cdc318af142274c3ddb1899ad571183221f37a5d0e701255205d5=_1bad77677883a615cfeb603749cd66ca
 _opensaml_req_ss%3Amem%3A648134308c31519f80ebd119633a05d3969b076876de9d600b760830ed8154ee=_4bea9562ad3fc964006cd0dd73e36e95
 _opensaml_req_ss%3Amem%3Aedb491eb452de47954c593214d8007fe13c01570a42e629dd4351278da50e5ce=_e99177a2cbe3a1db94201ff461589ee3
 _opensaml_req_ss%3Amem%3A2c8b0cce5e4917660242ff79fb623cbf443340c769f446f330864281f4e96df0=_9a8f35a3cd14a3580963145824d3a285
 _opensaml_req_ss%3Amem%3Adcc02a7ce4eda1b6dee442a99dcafc728fdbc3882ebf42d4ec8bb74099e7b1f4=_31340cb12e6c6d6aac3a2521b26b1131
 _opensaml_req_ss%3Amem%3Aa646c6d6a880163a465179773f326939840cf5e4dfada14d3a7ffa29faf080bb=_858d13d4ffe7ee8cddd407dd6a6472db
 _opensaml_req_ss%3Amem%3A9f525326ff04eacc8da7e005897a59cff4c86b426b537d30865fc8af077bf482=_05a13d48eebc41038da55feb5456f95f
 _opensaml_req_ss%3Amem%3A6f8132ba18f30bb1b461129e911fe4e78aabbfa82d699607a54406946162b84c=_ea036e61714128b931e6d508d4739627
 _opensaml_req_ss%3Amem%3A763ed6288147459143f6d9891dca5ace1a3627dbd7a1a67f76e666c52486494d=_901201cf05773030ca0890346f58e792

经过调查,我们发现添加这些 cookie 是因为我们的 IdP 未配置为处理 SP 发起的身份验证。从技术上讲,该应用程序仅限于 IdP 发起的身份验证。我们更新了 Shibboleth 配置以停止 SP 发起的身份验证,希望能够解决该问题。

配置更新后,我们仍然看到用户的标头中带有 _opensaml cookie。当前的假设是,这些用户是相当长一段时间没有关闭浏览器的用户,一旦他们这样做,这些 cookie 将被清除。

问题: 有人在 Shibboleth 遇到过这样的问题吗?关于如何解决我们的问题还有其他建议吗?

java spring-boot authentication single-sign-on shibboleth
2个回答
1
投票

如果有人遇到这个问题..这通常是由身份验证重定向中未处理的 xmlHtml 请求引起的。这会将内部 cookie 暴露给浏览器。

此行为可以配置。您可以在 shibboleth2.xml 中设置最大数量的relayState cookie。请参阅 Sessions 元素的 relayState 属性的文档。它指出:

“中继状态:

控制如何保留与身份验证请求相关的信息(主要是访问的原始资源)以完成身份验证过程。如果未指定,则资源 URL 会在可能的情况下按值传递给 IdP。 “cookie”值会使 URL 保存在 cookie 中,以保护用户的隐私。推荐的第三个选项是通过指定“ss:id”形式的值来使用 SP 的持久存储,其中 id 引用一个元素,通常为“ss:mem”。 “cookie”选项可以包含“:n”后缀,其中 n 指定在清除旧的 cookie 之前允许的 cookie 数量,默认为 25。”

(请参阅文档:https://shibboleth.atlassian.net/wiki/spaces/SP3/pages/2065334342/Sessions

因此,使用值(例如)..relayState =“cookie:2”它将限制opensaml_req*cookie的最大数量为2。

我希望这有帮助。决定在这里发帖,因为我遇到了这个问题并且没有直接找到正确的答案。


0
投票

如果您在应用程序前面有代理(例如 cloudflare),则内部 IP 可能会经常更改,导致请求和回复最终具有不同的地址,从而导致 Shibboleth 循环。这种情况的解决方案是在Shibboleth配置中添加confirmAddress =“false”。

© www.soinside.com 2019 - 2024. All rights reserved.