Keycloak策略执行者仅承载客户端

时间:2019-07-05 17:10:31

标签: node.js keycloak

我正在开发一个使用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标签?我是否缺少某些配置?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

几天前,我也偶然发现了这种仅用于承载的内容。我还发现您可以启用细粒度的授权令人困惑,我也花了一些时间才能找到答案。好吧,正如名称所表明的,仅承载客户端仅通过其承载令牌对客户端进行身份验证。

答案 1 :(得分:0)

我也将此问题发布到Keycloak邮件列表中,答案是:

  

这是预期的行为,也是UI问题。当客户端仅承载时,您不应访问该选项卡。

他们甚至创建了一个问题KEYCLOAK-10808

这类似于@Valentin提到的内容。

如果您想阅读所有线程:Mailing list response

相关问题