keycloak官网
https://www.keycloak.org/
keycloak项目地址
https://github.com/keycloak/keycloak
keycloak官方文档地址
https://www.keycloak.org/documentation.html
keycloak下载地址
https://www.keycloak.org/downloads.html
最近在研究有关于身份认证授权相关的项目,然后在老师傅的指导下来研究使用这个keycloak;根据官方的快速开始手册,我很快就能创建好超级用户进入到设置界面;然后发现这个项目默认使用的是h2数据库,而且这个项目文档也提建议用户使用自己的数据库进行服务
1:根据官方文档,我们需要一个连接工具,因为我用的是mysql,所以就找一个相关的jar包;并将其配置到base目录下,例如我这里的目录就是:
E:\keycloak\keycloak-8.0.1\modules\system\layers\base\com
然后新建mysql文件夹,并在mysql文件夹下面新建一个main文件夹,完整目录就是
E:\keycloak\keycloak-8.0.1\modules\system\layers\base\com\mysql\main
;然后在里面放你的jar包,并设置你的module.xml配置文件
并在module.xml文件里面配置
<module name="com.mysql" xmlns="urn:jboss:module:1.3">
<resources>
<resource-root path="mysql-connector-java-5.1.44.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="javax.servlet.api" optional="true"/>
</dependencies>
</module>
这里就已经完成了连接jar包的设置;
2.配置连接驱动
第一步我们已经配置好了连接驱动的设置,我们需要设置自己的连接驱动,这样才能让keycloak使用我们自己的驱动进行数据库连接
我们找到目录
E:\keycloak\keycloak-8.0.1\standalone\configuration;就是standalone\configuration目录下的standalone.xml配置文件,打开它,找到drivers标签,并在标签里面添加我们自己的驱动
<driver name="mysql" module="com.mysql">
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
因为连接驱动jar包的版本不同,所以连接的路径会不一样,这里主要是找到jar包MysqlXADataSource.class这个类的路径,可以用winRAR解压文件直接打开jar包找到jdbc路径下找这个类的路径,并将路径方到
这个标签
3.配置自己的数据库
配置数据库那就先要自己新建一个库,名字随意,然后找到datasources标签,并将原来的KeycloakDS这个数据源给注释掉,并添加上自己的数据源
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true" >
<connection-url>jdbc:mysql://127.0.0.1:3306/keyloak7?useSSL=false&serverTimezone=GMT%2B8&characterEncoding=UTF-8</connection-url>
<driver>mysql</driver>
<security>
<user-name>root</user-name>
<password>root</password>
</security>
</datasource>
4.其他配置
<properties>
<!--<property name="dataSource" value="java:jboss/datasources/KeycloakDSMySQL"/>-->
<property name="dataSource" value="java:jboss/datasources/KeycloakDS"/>
<!-- <property name="initializeEmpty" value="true"/>
<property name="migrationStrategy" value="update"/>-->
<property name="initializeEmpty" value="false"/>
<property name="migrationStrategy" value="manual"/>
<property name="migrationExport" value="${jboss.home.dir}/keycloak-database-update.sql"/>
</properties>
根据官方的建议,需要将
图中的两个属性分别设置为false以及manual;至此,所有的配置都已配置完成,可以通过点击standalone.bat(因为我用的是windows,其他系统根据自己的选择启动)启动项目
5.极有可能发生的情况;即使按照官方文档的配置完成了数据切换的配置,但是仍然大概率发生服务启动失败的情况,此时你需要通过命令行启动mysql,登录mysql,并选择你的数据库,最后执行解压目录下keycloak-database-update.sql文件,然后重新启动服务
5.1如果没有配置mysql环境变量到系统,只能找到mysql的bin目录,并输入命令mysql -h localhost -u root -p
输入密码后就能连接上你自己的数据库了;
5.2选择你自己的数据库,就是需要切换的那个,命令就是use keyloak7
5.3执行你的keycloak-database-update.sql文件;因为这个文件不在mysql的根目录下。所以你只能找到他的绝对路径去执行
例如我这里就是source E:\keycloak\keycloak-8.0.1\keycloak-database-update.sql
等待执行完成,重启服务,出现以下代表服务已经启动
那么你就可以在浏览器里面直接输入
http://localhost:8080/auth
进行设置;到此,数据库切换到mysql就已经完成