You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不使用unsafe-inline的情况下实现Spring SSO正常工作?

Spring SSO Saml2WebSsoAuthenticationRequestFilter 与全局CSP兼容问题

Spring SSO的Saml2WebSsoAuthenticationRequestFilter类会生成一段硬编码的HTML页面,其中包含内联JavaScript实现自动重定向,核心代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Security-Policy" content="script-src 'sha256-oZhLbc2kO8b8oaYLrUc7uye1MgVKMyLtPqWR4WtKF+c='">
        <meta charset="utf-8" />
    </head>
    <body>
        <noscript>
            <p>
                <strong>Note:</strong> Since your browser does not support JavaScript,
                you must press the Continue button once to proceed.
            </p>
        </noscript>
        <form action="{authenticationRequestUri}" method="post">
            <div>
                <input type="hidden" name="SAMLRequest" value="{HtmlUtils.htmlEscape(samlRequest)}"/>
                <input type="hidden" name="RelayState" value="{HtmlUtils.htmlEscape(relayState)}"/>
            </div>
            <noscript>
                <div>
                    <input type="submit" value="Continue"/>
                </div>
            </noscript>
        </form>
        <script>window.onload = function() { document.forms[0].submit(); }</script>
    </body>
</html>

我在Web服务器层面配置了不包含unsafe-inline的Content Security Policy(CSP),浏览器因此阻止了这段内联重定向脚本的运行。

问题

该JavaScript重定向如何与全局CSP策略兼容?是否需要将哈希值添加到全局策略中,或者重写Saml2WebSsoAuthenticationRequestFilter类并替换HTML?

补充说明

我们最终将对应的sha256哈希值添加到了全局请求头中,或许未来会有更优的解决方案。


内容的提问来源于stack exchange,提问作者Stomf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 04:25:01