Keycloak是开源的身份及访问控制管理软件,提供开箱即用的认证、授权、单点登录、用户管理等功能,更容易地对应用和服务进行安全保护。
本文档提供的Keycloak,基于开源的Keycloak V3.4.0,增加了扩展的自定义REST API和个性化主题,并初始化了MySQL数据库连接模块,可以更加快速地实施搭建,以提供统一身份认证和访问控制功能。
Keycloak的安装部署过程,可以概括为系统环境准备、安装包准备和实施部署,如下:
系统环境准备:Keycloak可以运行在任何具有JRE的操作系统上,本文档提供的Keycloak还需要MySQL。
安装包准备:请联系技术研究中心技术支持部(电话:0531-85105635),获取Keycloak安装包;或者见网盘
实施部署:包括安装发布包、创建数据库、启动。
硬件环境要求
(1) 至少512M内存。
(2) 至少1G磁盘空间。
软件环境要求
(1) 需要安装Java 8 JDK,以提供Keycloak所需的Java运行时环境。
(2) 安装MySQL 5.x版本,并配置为表名不区分大小写,作为Keycloak的数据源。
(3) 需要解压缩软件,用于解压Keycloak安装包。
keycloak的需要jdk以及mysql的支持,这里要求jdk1.8以上mysql5.7以上,我部署的时候使用的jdk1.8_u201以及mysql5.7.25
检查系统中是否有jdk,在命令行输入java -version,若有以下信息则说明安装成功
检查系统中是否有mysql,在命令行输入ps -el|grep mysql,若有以下信息则说明安装成功
安装包所含的文件清单如下:
序号 |
名称 |
说明 |
1 |
Keycloak-3.4.0.Final.zip |
Keycloak官方发布包,下载地址 |
2 |
Keycloak-additional.zip |
增加自定义API,个性化主题等特性 |
3 |
Keycloak-init.sql |
初始化SQL |
先解压Keycloak-3.4.0.Final.zip到一个目录下,如解压到/opt/keycloak中,然后解压Keycloak-additional.zip到上一个的解压文件里面,即/opt/keycloak/Keycloak-3.4.0.Final
unzip keycloak-3.4.0.Final.zip -d /opt/keycloak
unzip -o keycloak-additional.zip -d /opt/keycloak/keycloak-3.4.0.Final/
第一步,创建MySQL数据库keycloak,再使用keycloak-init.sql进行初始化。
第二步,修改数据库连接配置,包括数据库地址与端口、数据库名称、数据库连接用户名与密码。配置文件位置:
{KEYCLOAK_HOME}/standalone/configuration/standalone.xml
一种是前台启动,一种是后台启动,前台启动的话需要不关闭当前窗口,后台启动的话会一直启动杀死进程才会停止keycloak
前台启动:
cd {KEYCLOAK_HOME}
./bin/standalone.sh -Djboss.http.port=9080 -Djboss.bind.address.management=10.111.25.222 -Djboss.bind.address=10.111.25.222
启动后,在命令行显示started,表示启动成功,如下所示:
上述启动命令中包括一些“-D”参数,这里做一下详细说明。
-Djboss.http.port=9080:
用于指定所用的HTTP端口,默认是8080。keycloak所用的端口有近十个,部署时根据当前服务器端口的可用情况进行修改,一般可能需要修改的端口详见{KEYCLOAK_HOME}/standalone/configuration/standalone.xml,如下:
-Djboss.bind.address.management=10.110.13.xx -Djboss.bind.address=10.110.13.xx:
用于绑定Keycloak部署的服务器IP,如果Keycloak部署在内外网环境下,那么使用内网IP绑定。如果10.110.13.xx对应的内网地址是172.16.1.32,启动命令就变成了
./bin/standalone.sh -Djboss.http.port=9080 -Djboss.bind.address.management=172.16.1.32 -Djboss.bind.address=172.16.1.32
配置文件中所有的“${}”标记的配置项,既可以直接在配置文件中修改,也可以启动时用“-D”指定。
停止
这种启动后,命令行仍在前台,使用Ctrl+c强制结束进程,即可停止Keycloak
后台启动:
使用“nohup”和“&”,以后台进程的方式启动,即“nohup”+空格+要执行的命令+空格+“&”,如下:
d {KEYCLOAK_HOME}
nohup ./bin/standalone.sh -Djboss.http.port=9080 -Djboss.bind.address.management=10.111.25.222 -Djboss.bind.address=10.111.25.222 &
停止
这种方式,需要使用kill+进程号的方式停止Keycloak。如下所示:
ps -ef | grep keycloak
kill -9 4814
以上介绍的两种方式,更适合开发阶段,在测试环境和生产环境上,建议将Keycloak添加的系统服务中,以系统服务的方式启停。
参考文档:http://idatalake.inspur.com/jsp/indata/docs/product/intelligentQA.jsp?li=nav-doc