node.js - 无法获取授权代码:错误:证书链中的自签名证书
问题描述
我正在尝试访问受 Keycloak url 保护 -/hello
在浏览器中。url 由 node.js 应用程序提供此错误由以下代码引发:
在以下一系列操作之后:
1) 将客户端和用户添加到 keycloak 到 KeyCloak 主域
2) 保护 express node.js 应用程序的 url:
var Keycloak = require('keycloak-connect');
let kcConfig = {
clientId: 'test_ui',
// secret : "d31c4718-12e9-407b-9bf2-cb72734a23f0",
public: true,
serverUrl: https://127.0.0.1/auth,
resource: "test_ui",
realm: 'master'
}
var session = require('express-session');
var memoryStore = new session.MemoryStore()
var keycloak = new Keycloak( {store : memoryStore}, kcConfig);
this.app.use(session({
secret: 'mySecret',
// resave: false,
// saveUninitialized: true,
store: memoryStore
}));
this.app.use( keycloak.middleware() );
this.app.get( '/hello', keycloak.protect());
3) 在浏览器中访问受保护的 url,被重定向到 Keycloak 登录屏幕,正在验证...然后弹出错误。
在wireshark中可以看到以下请求序列:
/auth/realms/master/protocol/openid-connect/auth?client_id=test_ui&state=504b250d-8616-4685-8c8d-5032713c883a&redirect_uri=https://127.0.0.1/hello/auth_callback&scope=openid&response_type=code
在登录屏幕中进行身份验证后:
/auth/realms/master/login-actions/authenticate?session_code=TwhsWxUig85PFHfiv-31OTHQl3aApD6z0lMdOr8hgDc&execution=d58a2cad-2be2-4797-b35a-d7b606945b14&client_id=test_ui&tab_id=ywQfz51qnM0
我想过添加sslRequired: "none"
to kcConfig
,但做似乎没有效果。尝试使用机密客户端而不是公共客户端无济于事。
package.json内容:
"express": "4.16.2",
"keycloak-connect" : "4.3.0",
"express-session" : "1.15.6"
使用 Keycloak 4.3。
问题的原因是什么以及如何解决此错误?
更新
在 Keycloak 邮件列表中的响应之后添加process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
到node.js应用程序,现在出现错误:
无法获得授权代码:401:未授权
解决方案
如引用的邮件列表中所述:
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0
奇迹般有效。
推荐阅读
- url - 在 Julia 中加入部分 URL
- python - 如何创建用于重新缩放 PyTorch 张量的缩放矩阵,然后如何使用它?
- ios - 偏移二维矩阵:图案中的等间距
- activemq - ActiveMQ CMS:在创建消费者和设置监听器之间会丢失消息吗?
- laravel - How to send data colected with Laravel Livewire to Fortify?
- sql - SQL - Selecting all rows with non matching null rows
- python - How to show every layer in keras?
- typescript - readFileSync error occurs when to read yaml file
- javascript - How to pass an object to a .handlebars template and use it in a javascript code block?
- python - How to JSONL serialize sets in YAML style?