文章目录
- 01 关于keycloak
- 02 准备工作
- 2.1 安装docker
- 2.2 安装docekr-compose
- 2.3 获取https证书
- 03 编写docker-compose.yml
- 04 访问keycloak
01 关于keycloak
Keycloak是一个开源的身份和访问管理解决方案,由RedHat公司开发和维护。它提供了一套全面的工具和功能,帮助开发人员实现安全的用户身份验证和授权机制,同时简化了应用程序的身份和访问管理流程。
关于keycloak的详细介绍及相关概念,参考我之前的一篇文章:keycloak的介绍和基本概念
本文写作日期是2023年6月,截至目前,keycloak的最新稳定版本是21.1.1
官网:https://www.keycloak.org
官方文档:https://www.keycloak.org/documentation
GitHub:https://github.com/keycloak/keycloak
本文介绍通过docker安装并启动keycloak,具体使用docker-compse的方式。
02 准备工作
2.1 安装docker
参考我的另一篇文章:Linux下Docker的安装与常用命令
2.2 安装docekr-compose
# 先从github上下载 也可在本地下载好后上传到服务器的/usr/local/bin目录
curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose
# 然后添加可执行权限
chmod +x /usr/local/bin/docker-compose
# 安装完成后查看版本(检查可用性)
docker-compose --version
2.3 获取https证书
访问keycloak需要使用https,如果有域名,可以去服务商获取可信证书,作为学习,我们也可以使用命令生成自签名的证书,直接通过ip进行访问。
# 将xxx.xxx.xxx.xxx替换为服务器公网ip或域名
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt -subj "/CN=xxx.xxx.xxx.xxx"
使用OpenSSL工具生成一个自签名的证书。生成的证书将在当前目录下生成两个文件:server.key(私钥)和 server.crt(证书文件)。
注意,自签名证书不会被公共信任机构所信任,不适用于开发环境。
03 编写docker-compose.yml
在官方文档的介绍中,使用下面这条命令可启动一个简单的keycloak。
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:21.1.1 start-dev
不过我们有一些定制化的需求,例如,不使用keycloak自带的数据库,而使用自己的mysql数据库,可以通过更多命令参数实现,这里采用docekr-compose的方式完成。
docker-compose.yml文件如下,请根据自己实际情况更改:
version: '3.7'
services:
# mysql容器
mysql:
container_name: mysql
image: mysql
command: --lower_case_table_names=1 --sql-mode="" # 可选
ports:
- 3306:3306
volumes:
- ./db-init:/docker-entrypoint-initdb.d # 可选
- ./data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: keycloak
TZ: Asia/Shanghai # 可选
# keycloak容器
keycloak:
container_name: keycloak
image: quay.io/keycloak/keycloak:21.1.1
depends_on:
- mysql
environment:
# 设置管理员账号密码
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
# 数据库配置
KC_DB: mysql
KC_DB_USERNAME: root
KC_DB_PASSWORD: 123456
KC_DB_URL: jdbc:mysql://ip:3306/keycloak # 能连接到数据库的ip 例如公网ip
quarkus.transaction-manager.enable-recovery: true # 可选
ports:
- 8443:8443
security_opt:
- seccomp:unconfined # 可选
volumes:
- /root/keycloak/cert:/etc/x509/https
# 下面3行卷映射为可选配置
- /var/keycloak/conf/quarkus.properties:/opt/keycloak/conf/quarkus.properties
- /var/keycloak/themes:/opt/keycloak/themes
- /etc/localtime:/etc/localtime
privileged: true # 可选
command: start --hostname=公网ip或域名 --https-certificate-file=/etc/x509/https/cert.pem --https-certificate-key-file=/etc/x509/https/key.pem
在这一docker-compose.yml文件中,配置了keycloak使用mysql数据库,https证书通过卷映射可获取,配置为:/root/keycloak/cert:/etc/x509/https
。
需将刚才生成的证书文件存放在主机的/root/keycloak/cert
目录下。
最后在执行启动命令时指定了证书文件(注意证书文件名)
接下来启动docker-compose
# 首次启动先拉取镜像
docker-compose pull
# 启动命令
docker-compose up -d
# 关闭命令
docker-compose down
# 查看日志
docker-compose logs
04 访问keycloak
启动好后稍等片刻,可通过ip或域名访问。
在上面的配置中,使用的是ip地址,端口使用的是8443。
访问https://xxx.xxx.xxx.xxx:8443
即可。
因为是自签名证书,提示不安全,忽略,点击继续访问。
访问成功,点击左侧的Administrator Console进行登录,输入刚才配置的账号和密码(admin)。
可以按图所示将界面改为中文。
到此,keycloak就安装成功了!🎉