Keycloak从数据库/外部源添加额外声明

时间:2017-04-12 17:41:43

标签: jwt keycloak

我无法理解我从应用程序数据库中添加额外声明的方式。鉴于我的理解有限,我看到两种方式:

  1. 成功验证后,keycloak会以某种方式从应用程序数据库中获取额外声明。例如,这个app数据库是postgres。
  2. 让应用程序使用共享密钥使用额外声明更新jwt。
  3. 我想要两条路径的反馈。我觉得第一种选择可能更安全。但是我不确定从哪里开始实施。

1 个答案:

答案 0 :(得分:2)

在这里回答我自己的问题。我将这个问题交叉发布到Keycloak用户邮件列表(http://lists.jboss.org/pipermail/keycloak-user/2017-April/010315.html)并得到了一个看似合理的答案。

这是从我在那里收到的答案粘贴的。

我使用第一个选项。我使用协议映射器来完成它,这是一个方便的地方,因为令牌已经由keycloak构建但尚未签名。这是程序:

  1. 用户登录

  2. 我的自定义协议映射器被调用,我覆盖transformAccessToken方法

  3. 在这里,我将协议映射器所在的客户端登录到keycloak中作为服务。这里不要忘记使用另一个客户端ID而不是您正在构建协议映射器的客户端ID,否则您将输入无限递归。

  4. 我将访问令牌放入协议映射器中,并调用应用程序的其余端点来获取额外的声明,这是有保障的

  5. 获取端点返回的信息并将其添加为额外声明