从Node.js访问Keycloak组属性

时间:2018-12-07 00:05:35

标签: keycloak

我已经设置了Keycloak并与NodeJS一起运行。

我看到您可以创建组并为这些组分配属性。是否可以从NodeJS应用程序访问这些属性?

我什至找不到这些组,更不用说它们的属性了。

1 个答案:

答案 0 :(得分:1)

可以。但是,几乎没有官方文档说明如何实现这一目标。您可以通过客户端映射器返回大多数keycloak属性,组和角色。默认情况下,没有配置。 要配置额外的映射器:在管理控制台中,选择客户端,然后选择“映射器”选项卡。那应该带您到映射器列表。

List of client mappers

您可以在此处添加不同类型的映射器。添加映射器后,您可以决定从客户端对Keycloak的哪些调用返回属性,以及返回的属性的名称是什么。以下屏幕快照包括一个映射器,该映射器返回由组组成的字典,其中包含子组,并用正斜杠分隔。您的Node代码将需要解析返回的JSON对象。

group mapper details

所有信息都在keycloak令牌中返回,该令牌是Javascript Web令牌。在Node中,您可以通过将令牌打印到日志中来进行检查。 keycloak-connect中间件将令牌等存储在请求中称为kauth的对象中。检索上述屏幕快照中配置指定的组列表的路径如下所示。如果您在配置中更改令牌声明名称,则需要相应地在NodeJS代码中更改路径。您需要从应用程序中注销,然后再次登录以使对映射器的更改生效。

router.get('/', async function(req, res){ 
  console.log(req.kauth.grant.access_token.content.groups) ..
}