我正在创建一个员工管理解决方案,它将与组织的 Keycloak 服务器连接以进行身份验证。软件是用nodejs+express编写的,我尝试使用keyclock-admin包。
我在 keycloak 服务器上创建了一个客户端,并将其定义为“仅承载”访问类型,但我在身份验证方面遇到问题,因此它可以列出用户(并最终执行其他管理操作)服务器。
我尝试过的几种方法:
this.kcAdminClient = new KcAdminClient({
baseUrl: 'https://keycloak.dev.myorg.com/auth',
realmName: 'master'
});
await this.kcAdminClient.auth({
grantType: 'client_credentials',
clientSecret: '0f65bbed-a755-4ab0-ad1a-19a4085f10c0',
clientId: 'staff-management'
});
结果:
{
error: 'invalid_client',
error_description: 'Bearer-only not allowed'
}
注意:尝试添加 username
、password
(使用有效的管理员用户凭据),甚至将 grantType
更改为 password
,但没有更改
然后我尝试了以下操作,因为 bearer-only
建议我们应该使用令牌:
this.kcAdminClient = new KcAdminClient({
baseUrl: 'https://keycloak.dev.myorg.com/auth',
realmName: 'master'
});
this.kcAdminClient.setAccessToken('...');
console.log(await this.kcAdminClient.users.find());
结果,在 find()
期间:
{ error: 'HTTP 401 Unauthorized' }
此时我不确定下一步是什么?我怀疑我错过了某处的许可,但我还没有找到任何东西。任何帮助将不胜感激。