You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Keycloak实现ActiveMQ Artemis授权遇LoginModule缺失问题求助

问题:通过Keycloak实现ActiveMQ Artemis授权失败,Keycloak集成未启用

我正在开展一项实验:尝试通过Keycloak实现ActiveMQ Artemis的授权功能,预期效果为用户访问8161端口时跳转至Keycloak授权页面,经Keycloak验证权限通过后进入Artemis网页。

本地配置完成后,Artemis容器日志出现以下错误:

2024-11-07 14:30:53,852 WARN [io.hawt.system.JaasAuthenticator] Login failed due to: No LoginModule found for org.keycloak.adapters.jaas.DirectAccessGrantsLoginModule

同时启动容器时日志显示:

2024-11-07 14:30:52,454 INFO [io.hawt.web.auth.keycloak.KeycloakServlet] Keycloak integration is disabled

我已配置docker-compose.yml、keycloak.json及login.config(具体内容如下),但无法定位问题,也不清楚如何启用Keycloak集成。


配置文件

docker-compose.yml

version: '3'

services:
  keycloak:
   image: quay.io/keycloak/keycloak:24.0.0
   container_name: keycloak
   restart: unless-stopped
   environment:
      - KC_BOOTSTRAP_ADMIN_USERNAME=admin
      - KC_BOOTSTRAP_ADMIN_PASSWORD=admin
      - KC_HOSTNAME_ADMIN=http://localhost:8080
      - KC_HOSTNAME=http://localhost:8080
      - KC_METRICS_ENABLED=true
      - KC_HEALTH_ENABLED=true
      - KC_DB=postgres
      - KC_DB_PASSWORD=password
      - KC_DB_SCHEMA=public
      - KC_DB_USERNAME=keycloak
      - KC_DB_URL_HOST=postgres
      - KC_DB_URL_DATABASE=keycloak
      - KC_LOG_LEVEL=ALL
   depends_on:
      - postgres
   ports:
     - "8080:8080"
   command: start-dev
   volumes:
      - ./keycloak_data/auth/import:/opt/keycloak/data/import
      
  postgres:
    image: postgres:15.0
    container_name: postgres-keycloak
    restart: unless-stopped
    environment:
      POSTGRES_DB: keycloak
      POSTGRES_USER: keycloak
      POSTGRES_PASSWORD: password
    ports:
      - "5436:5432"
    volumes:
      - ./postgres_data:/var/lib/postgresql/data
      
      
  artemis:
    image: apache/activemq-artemis:2.37.0
    container_name: artemis
    restart: unless-stopped
    environment:
         - KEYCLOAK_ENABLED=true
         - ARTEMIS_USER=admin
         - ARTEMIS_PASSWORD=admin
    ports:
      - "8161:8161" 
      - "61616:61616"
    volumes:
      - ./artemis_data:/var/lib/artemis/etc

keycloak.json

{
  "realm": "artemis",
  "resource": "artemis-web",
  "auth-server-url": "http://localhost:8080/",
  "use-resource-role-mappings": true,
  "principal-attribute": "preferred_username",
  "ssl-required": "external",
  "credentials": {
    "secret": "DD91ch9wpGbs2gRkMjsp3sdabt52mQlc"
  }
}

login.config

activemq {
      org.keycloak.adapters.jaas.DirectAccessGrantsLoginModule required
      keycloak-config-file="/var/lib/artemis-instance/etc/keycloak.json"
      role-principal-class=org.apache.activemq.artemis.spi.core.security.jaas.RolePrincipal;
    org.apache.activemq.artemis.spi.core.security.jaas.PrincipalConversionLoginModule required
      principalClassList=org.keycloak.KeycloakPrincipal;
};

问题排查与解决方案

1. 修正Artemis配置挂载路径(核心问题)

当前docker-compose.yml中Artemis的volumes挂载路径错误,容器内/var/lib/artemis/etc并非实例配置目录,正确路径应为/var/lib/artemis-instance/etc。修改后:

volumes:
  - ./artemis_data:/var/lib/artemis-instance/etc

此修改可确保keycloak.json、login.config被放置到Artemis能识别的路径下。

2. 补充Keycloak JAAS依赖包

日志中No LoginModule found错误,是因为Artemis容器默认未包含Keycloak适配器jar包:

  • 下载与Keycloak 24.0.0匹配的keycloak-jaas-adapter-24.0.0.jar
  • 在本地创建./artemis_data/lib目录,将jar包放入其中
  • 为Artemis服务添加lib目录挂载:
volumes:
  - ./artemis_data:/var/lib/artemis-instance/etc
  - ./artemis_data/lib:/var/lib/artemis-instance/lib

3. 启用Hawtio的Keycloak集成

编辑./artemis_data/bootstrap.xml,在web节点的console应用中添加Keycloak配置:

<web bind="http://0.0.0.0:8161" path="web">
  <app url="activemq-branding" war="activemq-branding.war"/>
  <app url="artemis-plugin" war="artemis-plugin.war"/>
  <app url="console" war="console.war">
    <property name="keycloakEnabled" value="true"/>
    <property name="keycloakConfigFile" value="/var/lib/artemis-instance/etc/keycloak.json"/>
  </app>
</web>

4. 重启容器生效

执行命令重启Artemis容器:

docker-compose restart artemis

内容的提问来源于stack exchange,提问作者Nestor Технович

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 12:28:15