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模式配置完成。