keycloak-js 初始化失败,因为祖先违反了内容安全策略指令:“frame-ancestors 'self'

2024-03-05

我有一个 NGINX (1.14.1),它将 /auth 请求转发到在云中运行的 Keycloak (14.0.0)。

这是 /etc/nginx/conf.d/my.domain.biz.conf 中的 NGINX 配置

server {
  listen 80;
  server_name my.domain.biz;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl;
  server_name my.domain.biz;
  ssl_certificate /etc/letsencrypt/live/domain.biz/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/domain.biz/privkey.pem;
  location /auth {
    proxy_pass http://127.0.0.1:8080/auth;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Scheme $scheme;
    add_header X-Frame-Options "ALLOW-FROM https://my.domain.biz/";
    add_header Content-Security-Policy "frame-src https://my.domain.biz/; frame-ancestors https://my.domain.biz/; object-src https://my.domain.biz/;";
  }
}

我可以在 Keycloak 的管理控制台中创建一个领域和一个公共客户端https://my.domain.biz/auth/ https://my.domain.biz/auth/。我可以列出来自的端点https://my.domain.biz/auth/realms/myrealm/.well-known/openid-configuration https://my.domain.biz/auth/realms/myrealm/.well-known/openid-configuration

另外,我还更新了领域设置的安全防御中的以下两个值,

X-Frame-Options: ALLOW-FROM https://my.domain.biz
Content-Security-Policy: frame-src https://my.domain.biz/; frame-ancestors https://my.domain.biz/; object-src https://my.domain.biz/;

我有一个 React web 应用程序keycloak-js 14.0.0 https://www.npmjs.com/package/keycloak-js在我的笔记本电脑上运行,地址为 http://localhost:8044/,我想使用在云中运行的 Keycloak 进行身份验证。 Keycloak 客户端使用以下命令进行初始化keycloak.json,

{
  "realm": "myrealm",
  "auth-server-url": "https://my.domain.biz/auth/",
  "ssl-required": "external",
  "resource": "my-pkce",
  "public-client": true,
  "confidential-port": 0
}

和 React 代码片段,

  const kc = new Keycloak('/keycloak.json');
  ...
  await kc.init({
    onLoad: 'login-required',
    pkceMethod: 'S256',
    enableLogging: true
  });

当访问 http://localhost:8044/ 的 webapp 时,它没有重定向到 Keycloak 的登录页面,Chrome 浏览器控制台中显示错误:

Refused to frame 'https://my.domain.biz/' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self'".

并且 NGINX 中只记录了一行/var/log/nginx/access.log,

"GET /auth/realms/myrealm/protocol/openid-connect/3p-cookies/step1.html HTTP/1.1" 404 2032 "http://localhost:8044/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36" "-"

您知道可能出了什么问题吗?


在最近版本的 keycloak /auth 参数中已被删除。所以你的初始化参数配置应该如下所示:

“auth-server-url”:“https://my.domain.biz”

使用以下堆栈进行测试:

角度版本:11.13.13

钥匙斗篷js:18

keycloak 服务器:18.0.1(bitnami docker 镜像)

我希望它有帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

keycloak-js 初始化失败,因为祖先违反了内容安全策略指令:“frame-ancestors 'self' 的相关文章

随机推荐

  • 清除python中的变量

    python中有没有办法清除变量的值 例如 如果我正在实现二叉树 class Node self left somenode1 self right somenode2 如果我想从树中删除某些节点 我需要设置self left清空 The
  • iOS - 跟踪我的安装来自哪些广告活动[重复]

    这个问题在这里已经有答案了 我在应用商店中有一个 iOS 应用程序 并且正在运行一些广告活动 Google Adwords FB 广告等 我如何知道我的安装来自哪里 我有一个等效的 Android 应用程序 Google play 允许我将
  • ruby 中的错误解密错误

    在执行时cipher final 它说bad decrypt错误 我试图找出问题所在 但是 我找不到 你能告诉我我的代码有什么问题吗 这是我的代码 require openssl require base64 require hex str
  • 如何修复“重复属性映射”异常?

    我正在使用我的 xml 文件来从我的数据库映射新表 但是当我启动项目时 我收到一个我无法理解和解决的重复属性映射错误 这是我的 hibernate cfg xml
  • 如何检查 tvOS 是否启用了深色外观

    如何检查用户是否在 Apple TV 上启用了深色外观 Using UI用户界面样式 https developer apple com reference uikit uiuserinterfacestyle 首先在 tvOS 10 中提
  • 突出显示搜索文本 - 角度 2

    信使根据用户给出的输入显示搜索结果 在显示结果时需要突出显示搜索到的单词 这些是所使用的 html 和组件 组件 html div div Id result id div div Summary result summary div di
  • 如何在 C 中声明可变大小的数组?

    好吧 我正在做矩阵乘法 我需要做一个m x n数组和一个p x q array 但是 我不知道该怎么做 这是我的程序 当我手动输入值时 它会打印正确的输出 include
  • 从 javascript 链接到 .cshtml 视图

    如何从 javascript 文件直接指向 cshtml 视图 例如 为什么我不能将 cshtml 视图与 angular js 一起使用 就像这个例子一样 directive encoder timeout gt return restr
  • Bootstrap 4 使下拉菜单可滚动

    I have a problem with my drop down menu on smaller devices i cannot make it scroll able when i tried the solution here t
  • 从我在react-table中发送请求的api获取

    我需要一个服务器端表 所以在我看到之后react table在 github 上获得了 9k 星 然后决定使用它 我正在尝试构建一个 React Table 它可以对每个请求的数据进行轮询以获取最新数据 在示例中我使用 jsonplaceh
  • 检查是否使用 React Native 启用了位置服务

    我目前正在开发一个使用 React Native 的应用程序 该应用程序需要启用位置服务才能实现其某些功能 我一直在研究是否有一种简单的方法来测试用户是否打开了它们 这样如果没有打开 我可以显示不同的视图 除了 IOS 或 Android
  • JQuery、Flot、值标签、中心

    是否可以将值标签放置在条形上 使它们位于条形的中心 如果我设置栏align center 条形上的标签偏离且不居中
  • VBA 挂在 ie.busy 和 Readystate 检查上

    我正在尝试从网站上获取一些足球运动员数据来填充私人使用的数据库 我已经在下面包含了整个代码 第一部分是一个循环程序 它调用第二个函数来填充数据库 去年夏天 我在 MSAccess 中运行了这段代码来填充数据库 效果非常好 现在 在计划挂起之
  • 如何在 Android (kotlin) 中访问资产包数据

    我使用 asset pack 库将一些资源打包到我的 Android kotlin 应用程序中 https developer android com guide app bundle asset delivery build native
  • 如何解决GKE容器中的EADDRINUSE问题?

    我是容器和 GKE 的新手 我曾经运行我的节点服务器应用程序npm run debug我也尝试使用我的容器的 shell 在 GKE 上执行此操作 当我登录到 shell 时myapp容器并执行此操作我得到 gt email protect
  • 使用一个文件从另一个文件中提取指定行

    input1 1 s1 100 s100 90 s90 input2 a 1 b 3 c 7 d 100 e 101 f 90 Output a 1 d 100 f 90 I know join可以做到这一点 但它需要 1 在连接后对这些公
  • JS - 移动 - 从任何浏览器打开 Safari [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 由于Apple允许在Safari 移动版 中使用相机 我们可以做很多事情 但共享它们很难 您无法直接从其他浏览器 Chrome Facebo
  • 使用 Java 和 X3270 进行屏幕抓取

    我一直在尝试使用Java连接到X3270 实际上是wc3270 因为我在Windows环境下工作 并控制它访问主机 登录 导航几个屏幕并获取从x3270的命令 ascii 返回的数据 进行进一步处理 例如分离所需的字段 即使我可以连接到 x
  • Google Colab:重新加载导入的模块

    我在名为 Functions 的文件夹中有一个文件 readfunctions py 在此文件夹中还有一个 init py 文件 在文件 readfunctions py 中 我定义了一个名为 read from shower 的函数 fu
  • keycloak-js 初始化失败,因为祖先违反了内容安全策略指令:“frame-ancestors 'self'

    我有一个 NGINX 1 14 1 它将 auth 请求转发到在云中运行的 Keycloak 14 0 0 这是 etc nginx conf d my domain biz conf 中的 NGINX 配置 server listen 8