安装步骤

下文采用的主备模式

下载

下载keycloak:

https://downloads.jboss.org/keycloak/6.0.1/keycloak-6.0.1.tar.gz

下载keycloak-gatekeeper:

#用于代理kibana,prometheus

https://downloads.jboss.org/keycloak/6.0.1/gatekeeper/keycloak-gatekeeper-linux-amd64.tar.gz

下载驱动:

#MySQL Server 8.0, 5.7, and 5.6

http://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.13/mysql-connector-java-8.0.13.jar

安装Keycloak

基础安装

安装mariadb数据库服务,创建数据库keycloak。

安装Nginx。

安装keycloak的机器需要安装JDK1.8。

Keycloak配置

注:通过以下步骤配置两台keycloak服务。第6步只需要在一台keycloak机器上完成。第7步是数据库操作。

1.解压keycloak-6.0.1.tar.gz包。

2.创建目录keycloak-6.0.1\modules\system\layers\keycloak\com\mysql\main放入驱动,同时在该目录创建module.xml,内容如下:

3.修改standalone.xml

添加驱动配置,修改数据源配置。配置文件位于keycloak-6.0.1\standalone\configuration。

#添加驱动,h2后面添加mysql驱动

org.h2.jdbcx.JdbcDataSource

com.mysql.cj.jdbc.MysqlXADataSource

#创建数据库keycloak,修改数据源配置,用户名密码要正确

jdbc:mysql://localhost:3306/keycloak?useSSL=false&serverTimezone=GMT%2B8&characterEncoding=UTF-8

mysql

root

root

#注释掉h2数据源配置

#通过配置jndi-name配置数据源,如java:jboss/datasources/KeycloakDS和上面的一致即可,默认一致

4.配置内存

#通过bin/standalone.conf修改jvm内存。

JAVA_OPTS="-Xms256m -Xmx1024m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=512m -Djava.net.preferIPv4Stack=true"

5.启动

可以通过查看standalone.xml中socket-binding-group部分查看相关端口,会启动好几个端口,偏移量可以对端口全部偏移:

http默认端口8080,偏移100,实际访问8180。

bin/standalone.sh --server-config=standalone.xml -Djboss.socket.binding.port-offset=100 -Djboss.bind.address=0.0.0.0 &

6.添加初始化用户

#如果是有多台keycloak,则只需要在一台初始化admin用户,重启配置的这台,密码可以复杂点

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

7.配置http模式

配置http模式:

通过访问数据库执行:update REALM set ssl_required='NONE' where id = 'master';

注:如果认证访问keycloak采用公网ip,一定需要执行该sql,可能需要重启keycloak,否则会采用https访问。

keycloak集群

1.集群配置

修改两台keycloak服务配置,修改standalone\configuration\standalone.xml配置文件中urn:jboss:domain:undertow:中的X-Forwarded-For HTTP Config。将属性proxy-address-forwarding添加到http-listener元素。将值设置为true。

proxy-address-forwarding="true"/>

...

...

2.配置conf/nginx.conf,启动nginx

其中server1:8180和server2:8180为keycloak服务,以主备方式提供服务。(注:一定要以主备方式提供服务,不然会遇到很多问题)

worker_processes 1;

events {

worker_connections 1024;

}

http {

upstream keycloak_servers {

server server1:8180 max_fails=2 fail_timeout=3s;

server server2:8180 backup;

}

server {

listen 80;

location / {

proxy_pass http://keycloak_servers/;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Host $host;

proxy_set_header X-Forwarded-Server $host;

proxy_set_header X-Forwarded-Port $server_port;

proxy_set_header X-Forwarded-Proto $scheme;

}

}

}

3.重启keycloak和nginx服务,可以通过nginx代理服务访问keycloak。

后面使用keycloak时都需要配置代理地址。

集成keycloak

基础配置

1.配置中文

将master域设置成中文。

访问 Keycloak 服务,点击页面中的“Administration Console“,进入 Keycloak 登录页面,输入创建好的 Keycloak 的管理员账户,登录 Keycloak。您可以通过以下方式切换 Keycloak 的语言环境,默认为英文,该示例中,将语言切换至中文:

点击左侧导航栏中的“Realm Settings”,在右侧页面选择“Themes”选项卡,其中,“Login Theme”项、“Account Theme”项、“Admin Console Theme”项、“Email Theme”项全部选择“keycloak”,“Internationalization Enabled”项选择“ON”,开启国际化,“Default Locale”选择“zh-CN”,最后点击“Save”按钮。

此时,管理员登出,在 Keycloak 的登录页面会显示语言切换项,可能已经显示“中文简体”,还是要点一次选择“中文简体”,登录 Keycloak。

2.添加域

Keycloak默认的域为 Master,您可以使用默认的 Master 域,也可以新添加一个域。鼠标移动到左侧导航栏 Master 域名上,在下拉按钮中点击“添加域”,输入域名称,例如:sso,点击“创建”按钮,此时,进入到新创建的 sso,进行以下配置。需要注意的是,域和域之间的资源(包括用户、角色、客户端等一切信息)是相互隔离的。

按第1点的方式将sso域设置成中文。

注:如果采用的http方式,需要SSL需要设置成无,不然会出现required SSL之类错误。

3.添加客户端模板

添加‘客户端模板’,所有需要单点的系统共用一个模块进行安全控制。

(1).创建名称为sso-scope的‘客户端模板’

(2).在其下创建名称为Client-audience的Mappers。(如果存在多个应用,只要该域下面有新增客户端,那就需要在此处添加)

设置映射器类型:Audience

Included Client Audience: client (选择应用)

添加到ID令牌:开

添加访问到令牌:开

全局配置:通过点击'客户端模板'tab项Default Client Scopes

在Default Client Scopes 项,添加Available Client Scopes 中的client-scope到Assigned Default Client Scopes中。

注意:通过全局配置配置时,在客户端模板创建前,创建的客户端不会自动添加该模板,需要手动添加。

4.添加客户端

左侧导航栏选择“客户端”,在右侧页面点击“创建”按钮,添加客户端。添加客户端记得配置如下:

客户端Id(自定义值)

根URL (自定义值)

授权已启用:开

注:客户端使用的secret在凭证功能。

5.添加用户

Keycloak 允许直接由管理员添加用户与开放用户注册两种方式进行用户的添加。

注:创建用户时邮箱输入栏没有为必填,一定要添加邮箱地址,不然会影响登录。

6.配置域token超时

配置使用域sso中Tokens,设置框中的两个属性与“SSO会话最长时间”项值一样,避免使用过程中过期时间太短。

token.png

7.配置ldap(需要支持ldap用户认证时使用)

打开“用户联合”,通过添加提供程序配置ldap。

http://tech.bejond.org/2018/07/18/Keycloak配置LDAP-Active-Directory/

ldap_config.png

Keycloak和grafana集成

grafana和keycloak共用了同一个mysql数据库服务,创建数据库grafana。

Keycloak配置

@ 登录Keycloak后台

@ Add Realm,Name为sso

@ 创建Client,Name为grafana,grafana默认端口是3000, 因此Root URL填写http://ip:3000

@ 打开Credentials,留存Secret,用于稍后配置grafana.ini。

@ 到Users模块创建用户,用户必须填邮箱,保存后需要设置密码,同时“临时”关闭。

update_password.png

grafana配置

可以直接修改conf/defaults.ini文件,也可以通过复制conf/sample.ini创建conf/custom.ini,然后修改conf/custom.ini配置文件(不同环境不同安装方式,配置文件名称可能不一样)。

1.配置[server]

设置回调根URL地址,默认为http://localhost:3000,根据实际填写回调根URL:

root_url=http://192.168.1.12:3000

2.配置[auth.generic_oauth]

keycloak相关信息,具体配置值以实际为准。

[auth.generic_oauth]

enabled = true

name = {sso}

allow_sign_up = true

client_id = {grafana}

client_secret = {1e917797-ce0f-495c-97c4-0d3320781e73}

scopes = openid email name

auth_url = http://{localhost:8180}/auth/realms/{SSO}/protocol/openid-connect/auth

token_url = http://{localhost:8180}/auth/realms/{SSO}/protocol/openid-connect/token

api_url = http://{localhost:8180}/auth/realms/{SSO}/protocol/openid-connect/userinfo

配置说明,{}中是需要根据实际情况调整:

URL中sso为keycloak中创建的域名称。

enabled是否启动支持该认证。

name域名称。

登录成功后是否能注册账号到grafana。

client_id为对应客户端名称。

client_secret为对应客户端grafana的凭证中的secret值。

localhost:8180 应该是实际keycloak的地址。

例子如下:

[auth.generic_oauth]

enabled = true

name = SSO

allow_sign_up = true

client_id = grafana

client_secret = 1e917797-ce0f-495c-97c4-0d3320781e73

scopes = openid email name

auth_url = http://localhost:8180/auth/realms/SSO/protocol/openid-connect/auth

token_url = http://localhost:8180/auth/realms/SSO/protocol/openid-connect/token

api_url = http://localhost:8180/auth/realms/SSO/protocol/openid-connect/userinfo

3.配置[database]

该配置主要用于集群grafana,grafana数据库配置,grafana是集群需要关系数据库存储配置信息。

注意:如果以前以本地配置的形式运行,后面调整为数据库,会导致本地配置的数据看不到。

[database]

type = mysql

host = localhost:3306

name = grafana

user = root

password = root

配置说明:

type数据库类型。

host数据库地址。

name数据库名称。

user数据库用户名。

password数据库密码。

4.配置[security] (可选)

配置初次启动grafana管理员账号和密码,默认为admin,admin。

[security]

admin_user = admin

admin_password = 123456

5.重启grafana服务

再次访问http://ip:3000 ,登录界面能看到"Sign in with sso",点击即跳转到Keycloak登录界面,Realm为sso。使用注册账号登录,登录成功跳转回grafana,实现单点登录。同时grafana会创建同名用户,并存储基本信息,如邮箱。

Gatekeeper集成

Gatekeeper代理方式的一种,kibana和prometheus采用的该方式。下面以kibana为例。

流程

keycloak-kibana.jpg

配置

1.在Keycloak域sso下面创建kibana客户端名称为kibana,根url要配置代理地址,如http://ip:5602。

注意:根url要配置代理地址

2.在刚才新建的客户端模板sso-scope中Mappers下添加kibana,具体参考基础配置第3点。

3.创建gatekeeper.yml配置文件

listen: {0.0.0.0:5602}

discovery-url: http://{localhost:80}/auth/realms/sso

upstream-url: http://{localhost:5601}

client-id: {kibana} #和keycloak创建的客户端id一致

client-secret: {d870ea75-fb93-4842-9c35-315ee19c5595} #和keycloak创建的客户端id对应的凭证一致,只有授权已启用开启才会有凭证项

enable-default-deny: true

tokenEncryption: false

secure-cookie: false

encryption_key: AgXa7xRcoClDEAgXaSH4X0XhL5QyAgXa

#验证通过匹配

match-claims:

aud: {kibana} #这里有bug,不管配置的值是什么,系统匹配都是的client-id,目前配置成客户端名称

iss: http://{localhost:80}/auth/realms/sso #如果是集群keycloak,需要配置代理地址

resources:

- uri: /*

{}都是需要根据实际值进行调整。

启动:

openid-provider-timeout尽量配置长点,值单位s,m,h。避免使用过程中莫名奇妙导致一堆错。

keycloak-gatekeeper --openid-provider-timeout 12h --config gatekeeper.yml &

keycloak 配置 mysql_keycloak集群相关推荐

  1. windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error...

    windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error 学习了:https ...

  2. 服务器群装系统,手把手教你安装及配置服务器集群系统

    今天,我们方案大家谈的经销商为我们提供了安装及配置服务器集群系统的详细步骤.下面,我们来手把手的教您配置服务器集群系统吧! 1.集群服务器安装及配置: 步骤 节点1 节点2 存储 注释 安装配置系统 ...

  3. kafka入门:简介、使用场景、设计原理、主要配置及集群搭建

    为什么80%的码农都做不了架构师?>>>    kafka入门:简介.使用场景.设计原理.主要配置及集群搭建(转) 问题导读: 1.zookeeper在kafka的作用是什么? 2. ...

  4. Linux中安装配置hadoop集群

    原文:http://www.cnblogs.com/lijingchn/p/5574476.html 一. 简介 参考了网上许多教程,最终把hadoop在ubuntu14.04中安装配置成功.下面就把 ...

  5. 实时监控Cat之旅~配置Cat集群需要注意的问题

    在配置cat集群时,有一些设置是我们应该注意的,从它的部署文档中我们可以看到相关信息,但说的还不够明确和重要,大叔今天总结一下Cat集群配置的注意事项 1 服务端datasources.xml用来设置 ...

  6. Elasticsearch-Jest 配置ES集群源码解读

    文章目录 Jest Github地址 搭建源码环境 Jest配置ES集群 Jest 配置ES集群,确保应用高可用的原理探究 初始化 JestClient NodeChecker 源码分析 发起请求的过 ...

  7. 学习笔记Hadoop(七)—— Hadoop集群的安装与部署(4)—— 配置Hadoop集群

    四.配置Hadoop集群 Hadoop集群总体规划 Hadoop集群安装采用下面步骤: 在Master节点:上传并解压Hadoop安装包 . 在Master节点:配置Hadoop所需configura ...

  8. Windows下安装Cygwin配置Hadoop集群

    Hadoop集群一般是配置到Linux系统之上,如果电脑用的是Windows系统,那么可以通过虚拟机安装Linux系统或者在Windows上安装Cygwin来模拟Linux环境,从而搭建Hadoop集 ...

  9. tomcat7+nginx+memcached 配置tomcat 集群以及负载均衡

    首先:配置tomcat集群 nginx+ tomcat7 1 安装jdk (可以选择6或者7都可以) 此处不用多说. 2 下载nginx-1.2.5 (下载附件) 3 下载 memcached(下载附 ...

最新文章

  1. 快速排查feign.FeignException: status 500 …
  2. python好不好用_python应用情况怎么样?是否真的值得学习?
  3. Windows10安装配置ChromeDriver
  4. mysql索引的方法_mysql查看索引方法
  5. submit按钮html,html的两种提交按钮submit和button
  6. C++使用数组实现stack堆栈(附完整源码)
  7. BackTrack 5 发布了 ---直接下载地址
  8. php直接读取csv文件,php实现的读取CSV文件函数示例
  9. Python hash、xml、configparser、sheve、shutil模块讲解 以及 面向对象初识
  10. Go语言之进阶篇http服务器获取客户端的一些信息
  11. chardet java_java实现文件编码监测
  12. CVPR 2020 |商汤提出应对尺度变化的目标检测新算法
  13. 李想当年是被赶出汽车之家?真相了...
  14. HDU2015 偶数求和【入门】
  15. Failed to load class org.slf4j.impl.StaticLoggerBinder
  16. 蓝牙音箱连接成功但没有声音还是电脑的声音
  17. 安装window10出错:选中的磁盘具有 MBR 分区表。在 EFI 系统上,Windows只能安装到GPT磁盘。
  18. 小米3文件与电脑连接到服务器,小米3如何连接电脑_小米3连接电脑发送文件的步骤...
  19. python excel表格去重_EXCEL数据如何去重? Python:这事我比你熟
  20. js实现60秒倒计时

热门文章

  1. POJ3704 括号匹配问题
  2. 快手今日头条火山秒拍陌陌美拍抖音小咖秀视频下载软件神器或手机 视频去重消重伪原创 批量处...
  3. 趣学算法系列-动态规划
  4. Redis未授权访问的三种利用方式
  5. Objective-C内存管理方式
  6. 自由魔酒服务器维护,自由魔酒帝国号胜利之道 全面防御与重点突破
  7. unicloud配置网站域名
  8. 计算机毕业设计JAVA大学生健康信息管理系统mybatis+源码+调试部署+系统+数据库+lw
  9. 【项目精选】springboot音乐网站与分享平台(论文+源码)
  10. 代谢环境的大规模重建和系统发育分析(Large-scale reconstruction and phylogenetic analysis of metabolic environments)