在cli中创建keycloack服装领域

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

一般来说,这是使用 keycloak 的疑问,我会尽力尽可能清楚地解释我的疑问。 因此,当我启动 keycloak 时,我从以下命令开始使用 docker:

docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:24.0.2 start-dev

但是这样境界就已经创造出来了,我想建立一个服装境界。所以基本上,当我创建 docker 映像并且我想创建我的自定义领域时,我多次创建它并部分导出它,因为我们无法完全导出它。 所以我的疑问是:我可以在我的服装领域本地启动 keycloak 吗? 我用的是mac。

keycloak
1个回答
0
投票

您可以在 Mac 上通过 cURL 命令创建自定义领域。

另外,建议使用 Docker Desktopdocker compose

即使删除了 docker 容器,它也不会丢失您的自定义领域。

只需“docker run”和“docker rm”即可删除容器。 领域和用户的所有设置都将丢失。

如果使用 docker compose 和 volume,则可以保留 Keycloak 的设置。

演示

另存为

docker-compose.yml

version: '3.8'

services:
  postgres:
    image: postgres:15.6
    container_name: postgres_db
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: keycloak
      POSTGRES_USER: keycloak
      POSTGRES_PASSWORD: password

  keycloak_web:
    image: quay.io/keycloak/keycloak:24.0.2
    container_name: keycloak_web
    environment:
      KC_DB: postgres
      KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak
      KC_DB_USERNAME: keycloak
      KC_DB_PASSWORD: password

      KC_HOSTNAME: localhost
      KC_HOSTNAME_STRICT: false
      KC_HOSTNAME_STRICT_HTTPS: false

      KC_LOG_LEVEL: info
      KC_METRICS_ENABLED: true
      KC_HEALTH_ENABLED: true
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN_PASSWORD: admin
    command: start-dev
    depends_on:
      - postgres
    ports:
      - 8080:8080

volumes:
  postgres_data:

在 Mac 上打开终端

转到“应用程序”>“实用程序”>“终端”,或使用 Spotlight 搜索(Cmd + 空格键)并输入“终端”将其打开

运行 docker compose

docker compose up -d

用浏览器打开

http://localhost:8080

凭证

username: admin
password: admin

通过cURL获取主令牌

MASTER_TOKEN=$(curl --location --request POST http://localhost:8080/realms/master/protocol/openid-connect/token \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=admin-cli' \
--data-urlencode 'username=admin' \
--data-urlencode 'password=admin' \
--data-urlencode 'grant_type=password' | jq -r '.access_token')
echo $MASTER_TOKEN

通过 cURL 创建自定义领域

curl --silent --show-error -L -X POST "http://localhost:8080/admin/realms" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ""$MASTER_TOKEN" \
--data '{"realm":"demo-realm","enabled":true}'

结果

注意

主令牌的默认生命周期为1分钟

所以拿到master token后需要快速调用 或者

扩大测试范围。

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