使用Keycloak在ActiveMQ Artemis中授权

问题描述 投票:0回答:1

我正在做一个实验:我正在尝试使用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

我可以用它做什么?

我的 docker-compose 文件:

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

在我创建的 ActiveMQ Artemis 容器中

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;
};

我不知道这里出了什么问题。

附注我看到一个细节。当我在容器日志中使用 ActiveMQ Artemis 启动容器时,我可以看到以下内容:

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

也许我可以启用集成,我所有的问题都会得到解决?但我不知道如何启用它。

keycloak activemq-artemis keycloak-connect
1个回答
0
投票

您尝试使用的登录模块(即

org.keycloak.adapters.jaas.DirectAccessGrantsLoginModule
)未随 ActiveMQ Artemis 一起提供,这意味着您需要将其添加到代理的类路径您自己(例如,将其添加到代理的
lib
目录)。

© www.soinside.com 2019 - 2024. All rights reserved.