Keycloak是一个开源软件产品,旨在为现代的应用程序和服务,提供包含身份管理和访问管理功能的单点登录工具。截至2018年3月,红帽公司负责管理这一JBoss社区项目,并将其作为他们RH-SSO产品的上游项目。从概念的角度上来说,该工具的目的是,只用少量编码甚至不用编码,就能很容易地使应用程序和服务更安全。

Keycloak的第一个生产版本发布于2014年9月,其开发始于大约一年前。2016年,红帽公司将其RH SSO产品由基于PicketLink框架,切换为基于Keycloak上游项目。在此之前,PicketLink的代码已经被并入了Keycloak。

某种程度上,Keycloak现在也可以被认为是红帽公司JBoss SSO开源产品的一个替代,在这之前JBoss SSO是被PicketLink所取代的。截至2018年3月年JBoss.org是将旧的jbosssso子站点重定向到Keycloak网站的。JBoss这一名称是一个注册商标,红帽公司改变了其上游开源项目的名称,以避免使用JBoss,JBoss AS被更名为更具有辨识度的WildFly。

功能

Keycloak的众多功能包括:

  • 用户注册
  • 社会化登录
  • 单点登录/登出,在同一Realm中可跨所有应用(Realm是Keycloak中定义的概念)
  • 双重认证
  • LDAP集成
  • Kerberos代理
  • 多组织中,每个Realm可自定义皮肤

组件

Keycloak有2个主要组件:

  1. 登录Keycloak后台,查看relam setting中name(若没有自行创建)
  2. 添加clents,输入clentID(自己定义的名称,以grafana为例)与grafana访问地址
  3. 之后配置后查看其设置

  1. 进入Clients---->Credentials查看Client_secret
  2. 修改grafana配置文件/usr/share/grafana/conf/default.ini,配置内容如下

[auth·generic_oauth]
enabled = true
name = master #之前name
allow_sign_up = true
client_id = grafana #之前创建的client_id
client_secret = f1d3950c-1961-4456-56b0-63ert35626aa #secret
scopes = openid email name
auth_url =
http://mykeycloak.com/auth/realms/master/protocol/openid-connect/auth #修改为keycloak的域名
token_url = http://mykeycloak.com/auth/realms/master/protocol/openid-connect/token #
api_url = http://mykeycloak.com/auth/realms/master/protocol/openid-connect/userinfo #


3.再修改如下配置

```ini
protocol = http
http_port = 3000 # Grafana对外的访问端口
domain = mygrafana.com # Grafana对外的访问域名

4·进入grafana登录界面,发现登录界面能看到"Sign in with xxxx",点击进入即可。