Keycloak是一个比较流行的OAuth/OIDC服务器和IAM系统, 本文将介绍如何在Linux上配置Keycloak以standalone模式运行,并且使用MariaDB作为后端数据库存储。
这里假设:
- 安装Keycloak的Linux机器的IP地址是: 192.168.0.152;
- 安装MariaDB的Linux机器的IP地址是: 192.168.0.151;
- Keycloak的数据库的名称是keycloak_db;
- Keycloak将使用用户名 keycloak 和密码 123456 连接数据库;
- 所有的Linux系统都是Ubuntu Linux Server 20.04;
- Keycloak版本是10.0.1.
MariaDB安装与配置
- 首先需要安装MariaDB,这里就不作介绍了,网上有很多教程可以参考; 
- 使用root用户登入MariaDB: - 1 - $ sudo mysql -u root -u 
- 在MariaDB中创建名为keycloak_db的数据库: - 1 - > CREATE DATABASE keycloak_db; 
- 在MariaDB中创建名为keycloak的用户并赋予它操作keycloak_db的权限: - 1 
 2
 3
 4
 5- > create user 'keycloak'@'192.168.0.152' identified by '123456'; 
 > grant all on keycloak_db.* to 'keycloak'@'192.168.0.152' with grant option;
 > flush privileges;
Keycloak安装与配置
- 下载keycloak: - 1 - $ wget https://downloads.jboss.org/keycloak/10.0.1/keycloak-10.0.1.tar.gz 
- 解压keycloak: - 1 - $ tar zxvf keycloak-10.0.1.tar.gz 
- 下载MariaDB client JAR: - 1 - $ wget https://downloads.mariadb.com/Connectors/java/connector-java-2.6.0/mariadb-java-client-2.6.0.jar 
- 在keycloak中给MariaDB client创建对应的文件夹并将MariaDB client拷贝入文件夹: - 1 
 2
 3- $ mkdir -p keycloak-10.0.1/modules/system/layers/keycloak/com/mariadb/main/ 
 $ cp mariadb-java-client-2.6.0.jar keycloak-10.0.1/modules/system/layers/keycloak/com/mariadb/main/
- 为MariaDB client创建module.xml文件: - 1 - $ vi keycloak-10.0.1/modules/system/layers/keycloak/com/mariadb/main/module.xml - 文件内容如下: - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11- <?xml version="1.0" ?> 
 <module xmlns="urn:jboss:module:1.3" name="com.mariadb">
 <resources>
 <resource-root path="mariadb-java-client-2.6.0.jar"/>
 </resources>
 <dependencies>
 <module name="javax.api"/>
 <module name="javax.transaction.api"/>
 </dependencies>
 </module>
- 编辑keycloak的standalone.xml文件, 配置数据库驱动和数据库连接相关信息: - 1 - $ vi keycloak-10.0.1/standalone/configuration/standalone.xml - 把datasource部分替换成: - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12- <datasource jndi-name="java:/jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true"> 
 <connection-url>jdbc:mariadb://192.168.0.151:3306/keycloak_db?characterEncoding=utf8&useSSL=false</connection-url>
 <driver>mariadb</driver>
 <pool>
 <min-pool-size>5</min-pool-size>
 <max-pool-size>15</max-pool-size>
 </pool>
 <security>
 <user-name>keycloak</user-name>
 <password>123456</password>
 </security>
 </datasource>- 然后在drivers里加上MariaDB相关的driver信息: - 1 
 2
 3- <driver name="mariadb" module="com.mariadb"> 
 <driver-class>org.mariadb.jdbc.Driver</driver-class>
 </driver>
- 缺省配置下,keycloak只绑定到了127.0.0.1的端口,所以从其他机器上是访问不了keycloak的admin界面的,为了可以从其他机器上访问keycloak的admin界面,需要编辑standalone.xml文件: - 1 - $ vi keycloak-10.0.1/standalone/configuration/standalone.xml - 然后找到以下内容: - 1 
 2
 3- <interface name="public"> 
 <inet-address value="${jboss.bind.address:127.0.0.1}"/>
 </interface>- 把它改成: - 1 
 2
 3- <interface name="public"> 
 <inet-address value="${jboss.bind.address:0.0.0.0}"/>
 </interface>
- 配置完成后,尝试运行keycloak: - 1 - $ ./keycloak-10.0.1/bin/standalone.sh 
检查keycloak是否正常启动,一般第一次启动keycloak需要在数据库中创建和初始化需要的表,所以要花一些时间。启动完成后访问: http://127.0.0.1:8080/auth 看看是否可以正常显示keycloak的admin界面。
至此,keycloak的standalone模式配置完成。
 
        