Java 通过外部服务丰富keydepose令牌的正确方法

Java 通过外部服务丰富keydepose令牌的正确方法,java,keycloak,Java,Keycloak,扩展Key斗篷(例如通过服务提供商接口(SPI))的正确方法是什么?使用从另一个服务获取的信息来丰富发布的JWT令牌,但不将用户凭据检查委托给另一个服务?您创建了一个协议映射器。它们是各种类型的,您可以通过进入Clients>your_client>Mappers菜单并尝试创建一个来找到它们。此外,您应该看到,您可以选择要充实的JWT令牌,ID令牌或访问令牌。在您的情况下,您需要定制映射器的逻辑,以便从另一个服务获取信息。有两种类型的映射器允许这样做(至少据我所知): 脚本映射器:允许您用Jav

扩展Key斗篷(例如通过服务提供商接口(SPI))的正确方法是什么?使用从另一个服务获取的信息来丰富发布的JWT令牌,但不将用户凭据检查委托给另一个服务?

您创建了一个协议映射器。它们是各种类型的,您可以通过进入
Clients>your_client>Mappers
菜单并尝试创建一个来找到它们。此外,您应该看到,您可以选择要充实的JWT令牌,ID令牌或访问令牌。在您的情况下,您需要定制映射器的逻辑,以便从另一个服务获取信息。有两种类型的映射器允许这样做(至少据我所知):

  • 脚本映射器:允许您用JavaScript编写自定义映射器,这样您就可以实现服务调用并将结果添加到JavaScript中的令牌声明中。有关更多信息,请参见和。这有一些限制,例如

  • 直接在Java中实现映射器:完全灵活但需要更多的工作(实现Java接口
    AbstractOIDCProtocolMapper
    )。例如,见


  • 谢谢@cyril dangerville谢谢你的提示!有了这些,我还发现了另一个非常有用的帖子@Cyril for Mobile App如何检索设备_id并将其添加到令牌声明中