我正在尝试将基本节点 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);
});