我正在开发一个使用Keycloak作为身份验证服务的Node.js Web应用程序。我已经有两个客户端:Web应用程序(app-web)的<tr>
客户端和API(app-api)的<table>
<!--AccessTemplate_Body -->
</table>
客户端。在app-api上,我使用资源,范围,策略和权限来控制访问。
要检查权限,我正在使用const o = {
familyid: 434832,
groupid: 5332,
programtypecode: 'daycare'
}
keys = Object.keys(o)
// Do something with your keys, like
for (key of keys) {
console.log(`${key} => ${o[key]}`)
}
模块(npm keycloak-connect)中的public
。当我尝试检查权限时,服务器总是返回bearer-only
响应。但是,如果我将app-api从keycloak.enforcer(...)
更改为机密(保留相同的keycloak-connect
配置文件),则客户端可以正常工作并且能够检查权限。
此问题似乎是因为403 Access denied
客户端无法从服务器(keycloak similar question)获得令牌。
我的问题是:这是Keycloak的正常行为吗?如果无法使用bearer-only
,为什么要在keycloak.json
客户端中使用bearer-only
标签?我是否缺少某些配置?
感谢您的帮助。
答案 0 :(得分:1)
几天前,我也偶然发现了这种仅用于承载的内容。我还发现您可以启用细粒度的授权令人困惑,我也花了一些时间才能找到答案。好吧,正如名称所表明的,仅承载客户端仅通过其承载令牌对客户端进行身份验证。
答案 1 :(得分:0)
我也将此问题发布到Keycloak邮件列表中,答案是:
这是预期的行为,也是UI问题。当客户端仅承载时,您不应访问该选项卡。
他们甚至创建了一个问题KEYCLOAK-10808
这类似于@Valentin提到的内容。
如果您想阅读所有线程:Mailing list response