小编rba*_*lec的帖子

如何在 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 ×1