如何在不使用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
相关产品推荐
相关产品推荐

