我必须尝试使用
Keycloak
版本12
或18
。但不幸的是,我应该只能使用链接下载 Keycloak
21 以上的版本 - https://www.keycloak.org/downloads-archive.html
我的应用程序允许我
create a realm
超过web ui
。在该领域,客户可以配置自己的身份验证入口点,我的意思是他们自己的应用程序登录页面。
我在打开某些偏移 URL 时遇到问题,如果用户处于会话状态,通常会打开一个页面,否则再次登录时会打开该特定页面。但这并没有发生在他们称之为
OIDC
的已配置自定义领域上
为了查看,我应该在本地系统中重现该错误。为了使用选项
create a realm
,我必须首先配置 Keycloak
。
我在
Keycloak
上运行 JDK8
时遇到问题,它是支持的。如果我运行 Java 11
我会遇到这个问题,
Error: LinkageError occurred while loading main class io.quarkus.bootstrap.runner.QuarkusEntryPoint
java.lang.UnsupportedClassVersionError: io/quarkus/bootstrap/runner/QuarkusEntryPoint has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
所以,我自己转向了
JDK8
。然而,我面临以下问题,
Unrecognized option: --add-opens=java. Base/java.util=ALL-UNNAMED
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
我正在从
kc.bat
目录运行 KeyCloak_Home\bin
。
这个错误来自keycloak版本
21.0.0
到最新版本 - 24.0.3
请帮我解决这个问题。
如果我正确理解您的问题,您想在本地计算机上本地运行 Keycloak 吗?在这种情况下,您可以使用 Docker 创建它并拉取映像,如下所示:
quay.io/keycloak/keycloak:23.0.0
。也许24
也有效,但我还没有测试过。那么整个 Docker YAML 将如下所示:
version: '3'
services:
mysql:
image: docker.io/mariadb:11
environment:
MARIADB_DATABASE: ${KEYCLOAK_DB_NAME}
MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD}
MARIADB_PASSWORD: ${KEYCLOAK_DB_PASSWORD}
MARIADB_USER: ${KEYCLOAK_DB_USER}
volumes:
- mariadb-data:/var/lib/mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
PMA_HOST: mysql
PMA_PORT: 3306
MYSQL_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD}
ports:
- "9080:80"
depends_on:
- mysql
keycloak:
image: quay.io/keycloak/keycloak:23.0.0
environment:
keycloak.url: http://keycloak:8888
KC_HOSTNAME: localhost
KC_HOSTNAME_PORT: 8888
KC_HOSTNAME_STRICT_BACKCHANNEL: "true"
KC_DB: mariadb
KC_DB_URL: jdbc:mariadb://mysql:3306/${KEYCLOAK_DB_NAME}?characterEncoding=UTF-8
KC_DB_USERNAME: ${KEYCLOAK_DB_USER}
KC_DB_PASSWORD: ${KEYCLOAK_DB_PASSWORD}
KEYCLOAK_ADMIN: ${KEYCLOAK_USER}
KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_PASSWORD}
KC_HEALTH_ENABLED: true
KC_LOG_LEVEL: info
KC_HOSTNAME_STRICT_HTTPS: false
HOSTNAME_STRICT: false
KC_HOSTNAME_STRICT: false
KC_HTTP_ENABLED: true
KC_LOG: console
KC_PROXY: none
depends_on:
- mysql
command:
- "start-dev"
- "--http-port=8888"
ports:
- "8888:8888"
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:8888/health/ready" ]
interval: 15s
timeout: 2s
retries: 15
volumes:
mariadb-data:
现场说明,我自己没有创建这个 yaml,它是从这里的另一篇文章中创建的,但我忘记了问题
您还可以从该图像中删除 phpmyadmin,我们刚刚用它来调试案例