相关疑难解决方法(0)

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

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

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

我想要两条路径的反馈.我觉得第一种选择可能更安全.但是我不确定从哪里开始实施.

jwt keycloak

8
推荐指数
1
解决办法
1639
查看次数

如何在 Keycloak 中注册自定义 ProtocolMapper?

我正在努力在 Keycloak 中注册自定义 ProtocolMapper。我想根据令牌请求从我的数据库中添加一些数据。所以我遵循Keycloak 中给出的想法从数据库/外部源添加额外的声明

我实现了 ProtocolMapper 接口并添加了文件

META-INF/services/org.keycloak.protocol.ProtocolMapper

包含对我的班级的引用。到目前为止一切顺利,Keycloak 认可了新的实现。我也可以通过管理控制台配置它。

要将一些数据添加到令牌中,我想我还必须添加一个/一些接口

org.keycloak.protocol.oidc.mappers.UserInfoTokenMapper org.keycloak.protocol.oidc.mappers.OIDCIDTokenMapper org.keycloak.protocol.oidc.mappers.OIDCAccessTokenMapper

并根据接口实现方法。

现在的问题是,一旦我添加了接口,我就会收到以下日志消息:

08:55:07,292 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-6) MSC000001: Failed to start service jboss.deployment.unit."keycloak-spi.jar".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."keycloak-spi.jar".POST_MODULE
: WFLYSRV0153: Failed to process phase POST_MODULE of deployment "keycloak-spi.jar"
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:172)
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:2032)
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1955)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: Failed to link at/lotterien/jam/keycloak/spi/JamAuthorizationInfoProtocolMapper (Module "deployment.keycloak-spi.jar" from Service Module Loader): org/keycloak/protocol/oidc/mappers/UserInfoTokenMapper
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) …
Run Code Online (Sandbox Code Playgroud)

keycloak

7
推荐指数
1
解决办法
2481
查看次数

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

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

java keycloak

5
推荐指数
1
解决办法
2439
查看次数

Keycloak 创建自定义身份提供者映射器

我有一个开放的 ID 提供程序,我使用该提供程序作为 keycloak 的身份代理。我想映射从代理发送到 keycloak 的角色(声明)(keycloak 将在其 jwt 中发送映射的角色)。我想知道如何实现自定义映射器并将其添加到keycloak(例如keycloak中的硬编码映射器、属性映射器)。我可以这样做吗?谢谢

jboss jboss-tools keycloak jboss-eap-7 keycloak-services

2
推荐指数
2
解决办法
1万
查看次数