Keycloak服务器安装和配置
安装地址:https://www.keycloak.org/archive/downloads-4.4.0.html
参考文档:https://www.keycloak.org/docs/latest/server_installation/index.html#guide-overview
解压文件:
分发目录结构:
目录解释
-
bin: 包含启动服务和管理操作的脚本
-
domain: 在domain模式下的keycloak的配置文件和工作目录
-
standalone:包含在standalone模式下的keycloak的配置文件和工作目录后端类库
-
modules:服务器使用的JAVA库前端展示:
-
themes:服务器显示的所有css,img
-
welcome-content:服务器显示的模板和html类文件(实际上使用的是ftl模板)
操作模式
Standalone Mode:
Standalone模式仅在您要运行一个且仅运行一个Keycloak服务器实例时才有用。
该模式下无法进群部署,而且无法使用分布式缓存。
如果你的服务器运行失败,用户将无法登陆。建议不要在生产环境下面使用该模式。
模式配置:standalone文件夹下的configuration下的standalone.xml来配置。
目前使用standalone模式进行测试。
Standalone Clustered Mode
独立集群模式可用于集群部署。该模式要求在每个机器拥有keycloak分发的副本。该模式一开始部署非常简单,但在之后可能变得非常麻烦。
模式配置:
该发行版具有大多数预先配置的应用服务器配置文件,用于在群集中运行。它具有网络,数据库,缓存和发现的所有特定基础结构设置。如果在群集中没有配置共享数据库连接,将无法运行。同时你应该部署某种类型的负载均衡器。
配置文件为:standalone-ha
Domain Clustered Mode
域模式是一种集中管理和发布服务器配置的方法。
随着群集规模的扩大,以标准模式运行群集会很快变得更加严重。每次需要进行配置更改时,都要在群集中的每个节点上执行此操作。域模式通过提供存储和发布配置的中心位置来解决此问题。设置起来可能相当复杂,但最终还是值得的。此功能内置于Keycloak派生的WildFly 服务器中。
以下是在域模式下运行的一些基本概念。
域控制器
域控制器是一个负责存储,管理和发布集群中每个节点的常规配置的过程。此过程是集群中节点获取其配置的中心点。主控制器主机控制器负责管理特定计算机上的服务器实例。您将其配置为运行一个或多个服务器实例。域控制器还可以与每台计算机上的主机控制器进行交互以管理群集。为了减少运行进程的数量,域控制器还充当其运行的计算机上的主机控制器。
域名简介
域配置文件是一组命名的配置,可供服务器用于引导。域控制器可以定义不同服务器使用的多个域配置文件。
服务器组
服务器组是服务器的集合。它们作为一个进行管理和配置。您可以将域配置文件分配给服务器组,该组中的每个服务都将使用该域配置文件作为其配置。
在域模式下,域控制器在主节点上启动。群集的配置驻留在域控制器中。接下来,在群集中的每台计算机上启动主机控制器。每个主机控制器部署配置指定将在该计算机上启动的Keycloak服务器实例数。当主机控制器启动时,它会启动与配置完成时一样多的Keycloak服务器实例。这些服务器实例从域控制器中提取其配置。
Cross-Datacenter Replication Mode
standalone模式下集成MYSQL
1.创建keycloak数据库
2.在keycloak目录,创建红色路径 ..\keycloak 4.4.0.Final\modules\system\layers\base\com\mysql\main
3.下载MySQL 驱动并复制到上面路径
4.添加Module.xml文件在该目录下
<?xml version="1.0" ?> <module xmlns="urn:jboss:module:1.3" name="com.mysql"> <resources> <resource-root path="mysql-connector-java-5.1.40.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>
5.修改standalone.xml文件:
找到: <subsystem xmlns="urn:jboss:domain:datasources:5.0">
添加DataSource:
<datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" use-java-context="true"> <connection-url>jdbc:mysql://localhost:3306/keycloak?useSSL=false&tcpRcvBuf=102400000</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <driver>mysql</driver> <security> <user-name>root</user-name> <password>root</password> </security> </datasource> <drivers> <driver name="mysql" module="com.mysql"> <!-- <driver-class>com.mysql.jdbc.Driver</driver-class> --> <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class> </driver> </drivers>
在/bin目录下启动standalone.bat。