使用 oidc-client.js 的检查会话的 CSP 问题

Posted

技术标签:

【中文标题】使用 oidc-client.js 的检查会话的 CSP 问题【英文标题】:CSP issues with checksession using oidc-client.js 【发布时间】:2017-11-22 21:28:50 【问题描述】:

我正在使用 oidc-client 构建一个 SPA,以登录到使用 Identity Server 4 构建的 IDP。

登录重定向似乎工作正常,但在 Firefox 上我遇到了以下 CSP 问题

Content Security Policy: Ignoring "'unsafe-inline'" within script-src or style-src: nonce-source or hash-source specified  (unknown)
Content Security Policy: The page's settings blocked the loading of a resource at self ("script-src 'unsafe-inline' 'sha256-VDXN0nOpFPQ102CIVz+eimHA5e+wTeoUUQj5ZYbtn8w='"). Source: !function(t)function __webpack_require_....  checksession:1
Content Security Policy: The page's settings blocked the loading of a resource at self ("script-src 'unsafe-inline' 'sha256-VDXN0nOpFPQ102CIVz+eimHA5e+wTeoUUQj5ZYbtn8w='"). Source: window.devToolsOptions = Object.assign(w....  checksession:1
Load denied by X-Frame-Options: http://localhost:5007/home/error?errorId=a74accc61bb821ee1f42f7013a306e90 does not permit cross-origin framing.  (unknown)

我没有在我的 SPA 上设置任何 CSP 元标记,我想知道是否必须这样做。 稍微挖掘一下,oidc-client 似乎在我的应用程序中添加了一个 iframe,它指向 Identity Server 中的 checksession 页面(其中确实包括 CSP 标头“default-src 'none'; script-src 'unsafe-inline' ” sha256-VDXN0nOpFPQ102CIVz+eimHA5e+wTeoUUQj5ZYbtn8w='")

有人可以帮我解决这个问题或引导我走向正确的方向吗?我对 CSP 的了解非常基础。

【问题讨论】:

我恰好正在诊断完全相同的问题。我们正在体验 chrome 中的行为。我刚刚更新了 IDSrvr4。可能与github.com/IdentityServer/IdentityServer4/issues/659 有关。或者这个..***.com/questions/41854600/… 当应用程序在令牌过期时关闭时,您是否还在 signinSilent 中遇到“框架窗口超时”? github.com/IdentityModel/oidc-client-js/issues/311 在这里打开这个.. github.com/IdentityModel/oidc-client-js/issues/357 【参考方案1】:

这是 Redux devtools 插件试图在页面上注入他们的代码。

【讨论】:

以上是关于使用 oidc-client.js 的检查会话的 CSP 问题的主要内容,如果未能解决你的问题,请参考以下文章

oidc-client登录后重定向

如何使用会话数组检查复选框

使用 Session ID 检查会话是不是处于活动状态 - Laravel

检查用户是不是使用会话而不是数据库查询登录

如何检查会话是不是存在?

如何在中间件中使用会话来始终检查用户是不是登录