keycloak-11.0.2的安装和配置

 

目录

环境

数据库的安装和配置

keycloak-11.0.2的下载和配置

配置standalone.xml

keycloak使用mariadb的配置

启动keycloak

keycloak初始化配置


本文是在centos7下配置 keycloak-11.0.2使用mariadb数据库,keycloak-11.0.2以standalone模式运行

环境

 虚机:CentOS Linux release 7.9.2009 (Core) 虚机环境

数据库:MariaDB Ver 15.1 Distrib 5.5.68-MariaDB

 

数据库的安装和配置

安装mariadb: 

yum install mariadb mariadb-server

  配置数据库的shell script:

MYSQL_DBPASS=mysql
cat >/etc/my.cnf.d/openstack.cnf<<EOF
[mysqld]
bind-address = 192.168.78.134

default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
EOF
systemctl enable mariadb.service
systemctl start mariadb.service

mysql_secure_installation <<EOF

y
$MYSQL_DBPASS
$MYSQL_DBPASS
y
y
y
y
EOF

其中bind-address的配置要替换成mariadb数据库所在机器的IP地址,script中的MYSQL_DBPASS是设置的数据库密码

创建数据库keycloak:

CREATE DATABASE `keycloak` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'

给root用户赋予使用mysql密码访问keycloak database的权限:

GRANT ALL PRIVILEGES ON keycloak.* to root@’%’ IDENTIFIED BY ‘mysql’;

keycloak-11.0.2的下载和配置

从github上下载:

https://github.com/keycloak/keycloak/releases/tag/11.0.2

 将keycloak-11.0.2.tar.gz解压:

tar zxvf keycloak-11.0.2.tar.gz

得到keycloak-11.0.2的文件夹,文件夹的内容如下:

[root@localhost keycloak-11.0.2]# ls
bin  docs  domain  jboss-modules.jar  LICENSE.txt  modules  standalone  themes  version.txt  welcome-content

配置standalone.xml

修改keycloak-11.0.2/standalone/configuration/standalone.xml文件,注释掉下面的部分:

                <datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true"
 statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
                    <connection-url>jdbc:h2:${jboss.server.data.dir}/keycloak;AUTO_SERVER=TRUE</connection-url>
                    <driver>h2</driver>
                    <security>
                        <user-name>sa</user-name>
                        <password>sa</password>
                    </security>
                    <pool>
                        <max-pool-size>100</max-pool-size>
                    </pool>
                </datasource>

通过在段前后分别加<!--和-->来注释掉上面的xml内容,示例如下:

如果不想注释掉上面的内容,也可以直接删除掉。

在standalone.xml文件的<datasources>标签内,增加以下内容,(注意:数据库IP地址修改成自己的IP地址,数据库的用户名和密码也要修改成自己的):

                <datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true"
>
                    <connection-url>jdbc:mariadb://192.168.78.134:3306/keycloak?autoReconnect=true</connection-url>
                    <driver>mariadb</driver>
                    <security>
                        <user-name>root</user-name>
                        <password>mysql</password>
                    </security>
                </datasource>

实际上,注释掉的内容是不使用数据库的配置,而增加的内容是使用mariadb数据库的配置,当然还需要在<drivers>标签内增加下面的内容:

                    <driver name="mariadb" module="org.mariadb">
                        <xa-datasource-class>org.mariadb.jdbc.MariaDbDataSource</xa-datasource-class>
                    </driver>

将下面的IP地址修改为0.0.0.0,否则外部无法访问,只能本机能访问

 

此时standalone.xml已经配置完成。

keycloak使用mariadb的配置

数据库相关的配置,在下面的文件夹创建目录mariadb/main

keycloak-11.0.2/modules/system/layers/base/org

目录创建完成,如下:

keycloak-11.0.2/modules/system/layers/base/org/mariadb/main

下载mariadb-java-client-2.7.1.jar文件,下载链接:

 

https://dlm.mariadb.com/1484707/Connectors/java/connector-java-2.7.1/mariadb-java-client-2.7.1.jar

然后将mariadb-java-client-2.7.1.jar放在目录:keycloak-11.0.2/modules/system/layers/base/org/mariadb/main中,并在这个目录下创建module.xml文件,文件内容如下:

<module xmlns="urn:jboss:module:1.5" name="org.mariadb">
    <resources>
        <resource-root path="mariadb-java-client-2.7.1.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

此时配置完成

启动keycloak

在keycloak-11.0.2/bin目录下有standalone.sh,执行这个脚本文件:

./standalone.sh 

keycloak初始化配置

配置外网地址访问之后,如果是第一次启动keycloak,从外网访问时会跳转至登录页面而不会出现首次使用的管理员注册页面,从而无法登陆控制台。如下图所示不能设置用户,需要登录http://localhost:8080/auth,但是由于是外部登录的不是在keycloak所在的本机,所以无法f访问http://localhost:8080/auth,也就不能 initial admin user

解决方法有两种:

方法一:

可在keycloak-11.0.2/bin目录中找到add-user-keycloak.sh,运行如下命令新建管理员用户:

add-user-keycloak.sh -r master -u admin -p admin

keycloak默认存在一个master的realm,故-r参数应为master,执行命令后需要重启keycloak。此时便可以从外网以admin账户登录控制台了。

 

方法二:

安装图形化和firefox

yum -y install firefox

yum groupinstall "X Window System"

yum groupinstall "Gnome"

 

然后到vmware上的centos虚拟机上,在命令行执行startx就开启了图形界面,打开浏览器访问:http://localhost:8080/auth,正常打开初始化设置页面,开始initial admin user

 


版权声明:本文为weixin_39617861原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。