keycloak - 节点 oidc-provider(用于 keycloak)
问题描述
我正在尝试将基本节点 oidc-provider 应用程序作为我的 keycloak 服务器的 OIDC 提供程序。
Keycloak 正确链接到我的应用程序的登录页面。输入用户名和密码后,我会正确地转移回 keycloak。
但是,keycloak 会说“使用身份提供者进行身份验证时出现意外错误”。
编辑:我调整了 keycloak 日志级别,现在我看到以下错误:
无法使身份提供者 oauth 回调:org.keycloak.broker.provider.IdentityBrokerException:没有来自服务器的 access_token。
我的应用程序如下所示:
const express = require('express');
const Provider = require('oidc-provider');
const app = express();
const clients = [
{
client_id: 'my_keycloak_client',
client_secret: "<someKey>",
grant_types: ['authorization_code'],
response_types: ['code'],
redirect_uris: ['http://localhost:8080/auth/realms/master/broker/oidc/endpoint'],
token_endpoint_auth_method: 'none'
}
];
const oidc = new Provider('http://localhost:3001', {
async findById(ctx, id) {
return {
accountId: id,
async claims() { return { sub: id }; },
};
}
});
oidc.initialize({
clients: clients,
keystore: {
keys: [
{
kty:"RSA",
kid: "zid-auth key",
use: "sig",
p:"<someKey>",
q:"<someKey>",
d:"<someKey>",
e:"AQAB",
qi:"<someKey>",
dp:"<someKey>",
dq:"<someKey>",
n:"<someKey>"
}
]
}
}).then(function () {
app.use('/', oidc.callback);
app.listen(3001);
});
解决方案
您必须配置token_endpoint_auth_method
正确的方法值 keycloak 实际使用。如果为方法设置为none
.
推荐阅读
- elasticsearch - 部署 Elasticsearch 集群的最低资源是哪些?1 个主节点 - 2 个节点
- r - 如何控制逻辑回归中的自变量?
- reactjs - 如何在 React Native 中使用 componentWillUnmount?
- c - 无法理解 Axel Schreiner 的“C 中的 OOP”一书中的上下文
- azure - 重启后Kafka主题被删除
- dart - 飞镖如何获得十位数的时间戳?
- c# - 在一个方法中使用两个 Linq 查询
- amazon-web-services - 如何在 amplify-cli 中对查询结果进行服务器端排序/排序
- c - 将 Infinity 值分配给变量
- algorithm - 缓慢时变函数的恒定最小化