无法在 Apache Karaf 中安装 Keycloak 码头适配器

Keycloak jetty adapter cannot be installed in Apache Karaf

我使用 Apache Karaf 4.2.8。我安装了 keycloak osgi 功能。我可以使用 keycloak-jaas 功能为 karaf shell 配置身份验证。

现在我想在 /cxf 上下文下为我的服务配置身份验证。

我配置了 pax-web 上下文,所以登录方法是 KEYCLOAK。

但是我还必须安装keycloak-jetty-adapter,所以它可以集成。但是当我尝试安装该功能时,我收到一个错误。

trun()> feature:install keycloak-jetty9-adapter

org.apache.felix.resolver.reason.ReasonException: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=keycloak-jetty9-adapter; type=karaf.feature; version="[8.0.1,8.0.1]"; filter:="(&(osgi.identity=keycloak-jetty9-adapter)(type=karaf.feature)(version>=8.0.1)(version<=8.0.1))" [caused by: Unable to resolve keycloak-jetty9-adapter/8.0.1: missing requirement [keycloak-jetty9-adapter/8.0.1] osgi.identity; osgi.identity=jetty; type=karaf.feature; version="[9.2.0,9.3.0)"] at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1343) at org.apache.felix.resolver.ResolverImpl.doResolve(ResolverImpl.java:392) at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:378) at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:332) at org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:257) at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:388) at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1058) at org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread(FeaturesServiceImpl.java:994) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.apache.felix.resolver.reason.ReasonException: Unable to resolve keycloak-jetty9-adapter/8.0.1: missing requirement [keycloak-jetty9-adapter/8.0.1] osgi.identity; osgi.identity=jetty; type=karaf.feature; version="[9.2.0,9.3.0)" at org.apache.felix.resolver.Candidates$MissingRequirementError.toException(Candidates.java:1343) ... 12 more Error executing command: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=keycloak-jetty9-adapter; type=karaf.feature; version="[8.0.1,8.0.1]"; filter:="(&(osgi.identity=keycloak-jetty9-adapter)(type=karaf.feature)(version>=8.0.1)(version<=8.0.1))" [caused by: Unable to resolve keycloak-jetty9-adapter/8.0.1: missing requirement [keycloak-jetty9-adapter/8.0.1] osgi.identity; osgi.identity=jetty; type=karaf.feature; version="[9.2.0,9.3.0)"]

如果不安装该适配器,则我无法访问我的服务(我收到 403 禁止访问),因为它受 pax-web 保护,但无法进行身份验证。

karaf 中的 jetty 似乎是嵌入式的并且不包含所有功能,这不允许我安装 jetty 适配器。

根据 release notes for Apache Karaf 4.2.8,Karaf 使用的是 Jetty 9.4.22,这似乎超出了您在错误消息中的范围 version="[9.2.0,9.3.0)"

您需要将 Keycloak 升级到支持 Jetty 9 的版本。4.x 或将 Karaf 降级为支持与 Keycloak 使用的 Jetty 相同版本的版本。