我正在尝试将基本节点oidc-provider应用程序作为我的密钥库服务器的OIDC提供程序。
Keycloak正确链接到我的应用程序的登录页面。 输入用户名和密码后,我可以正确转移回密钥斗篷。
但是,密钥斗篷却说“通过身份提供者进行身份验证时发生意外错误”。
编辑:我调整了密钥斗篷日志级别,现在看到以下错误:
无法使身份提供者进行oauth回调:org.keycloak.broker.provider.IdentityBrokerException:服务器无访问令牌。
我的应用如下:
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);
});
答案 0 :(得分:1)
必须将token_endpoint_auth_method
配置为实际使用的方法值keycloak。如果为客户端提供了方法设置为none
的密码,则oidc-provider将无法通过客户端身份验证。