正在查看旧版本。 查看 当前版本.

与当前比较 查看页面历史记录

版本 1 当前 »

简介

Keycloak 是一款开源的身份验证程序,具备以下的特点:

  • 影响最小的方式为应用程序添加身份验证
  • 不存储用户数据和验证数据
  • 提供用户联合、高强度认证、用户管理、细粒度授权等功能

创建数据库

使用的数据库是 postgresql,假设已经有安装好的 postgresql,并且默认管理员账号是 postgres,那么我们先创建 keycloak 的用户。数据库的详细操作可以参考:PGSQL 安装配置指南

su - postgres
# 我们创建一个名为 keycloak 的 pgsql 用户和名为 keycloak 的数据库
createuser -s -P keycloak
createdb keycloak -O keycloak

docker-compose.yml

version: "3"
services:
  postgres:
    container_name: pgsql
    image: postgres:15
    ports:
      - "5432:5432"
    volumes:
      - ./database-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "user"]
      interval: 30s
      timeout: 20s
      retries: 3
    environment:
      POSTGRES_USER: 'keycloak'
      POSTGRES_PASSWORD: '<pgsql数据库密码>'
      POSTGRES_DB: 'keycloak'
      TZ: Asia/Shanghai
  keycloak:
    image: quay.io/keycloak/keycloak:23.0
    container_name: keycloak
    environment:
      KC_HOSTNAME: <域名,如sso.naizhao.com>
      KC_HTTP_PORT: <监听的http端口,比如8080>
      KC_HTTPS_PORT: <监听的http端口,比如8443>
      KC_HOSTNAME_STRICT_HTTPS: true
      KC_FEATURES: token-exchange
      KC_DB: postgres
      KC_DB_URL: jdbc:postgresql://<pgsql的IP,比如127.0.0.1>:5432/keycloak
      KC_DB_USERNAME: keycloak
      KC_DB_PASSWORD: <前面创建pgsql账号时输入的密码>
      KEYCLOAK_ADMIN: <管理员账号,比如admin>
      KEYCLOAK_ADMIN_PASSWORD: <管理员密码>
      KC_HEALTH_ENABLED: "true"
      KC_LOG_LEVEL: info
      KC_PROXY: edge
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://localhost:8080/health/ready" ]
      interval: 15s
      timeout: 2s
      retries: 15
    command: start
    ports:
      # 这里把8080端口映射到10080,8443映射到10443,防止和服务器上其他端口冲突
      - 10080:8080
      - 10443:8443


  • 无标签