【问题标题】:Keycloak add extra claims from database / external sourceKeycloak 添加来自数据库/外部源的额外声明
【发布时间】:2017-09-08 15:06:36
【问题描述】:

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

  1. 成功验证后,keycloak 会以某种方式从应用程序数据库中提取额外的声明。例如,这个应用程序数据库是 postgres。
  2. 让应用程序使用共享密钥通过额外声明更新 jwt。

我想要一些反馈意见。我觉得第一种选择可能更安全。但是,我不确定从哪里开始实施之旅。

【问题讨论】:

    标签: jwt keycloak


    【解决方案1】:

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

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

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

    1. 用户登录

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

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

    4. 我将访问令牌获取到协议映射器中,然后调用应用程序的其余端点来获取额外的声明,这是受保护的

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

    【讨论】:

    • 你应该接受你自己的答案。这些让人相信互联网点真的很重要。
    • 仅供参考 transformAccessToken 是OIDCAccessTokenMapper中的一个方法
    猜你喜欢
    • 2019-04-04
    • 1970-01-01
    • 2021-03-14
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 2019-04-07
    相关资源
    最近更新 更多