无法在 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 相同版本的版本。
我使用 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 相同版本的版本。