keycloak简介(可跳过)
keycloak是“身份和访问管理”的工具
可运用到以企业为中心的项目中
支持单点登录
支持三种不同的协议
OpenID Connect(身份协议)
一处注册到处使用。原本10个网站,需要10个用户名密码,如果10个网站支持OpenID,就可以 注册一个OpenId,登录一次方法10个网站。
OAuth 2.0(允许客户机应用程序依赖 OpenID Connect 的认证来验证用户身份)
前提:用户把,信息(姓名,年龄,邮箱等)存在keycloak服务器(注册一个openid)
目的:用户访问某网站时,要用到keycloak服务器的姓名等资源
步骤1:用户访问网站(客户端),网站将用户引导到keycloak服务器(做登录,资源授权)
步骤2:keycloak服务器引导用户返回客户端,将资源发给客户端
SAML 2.0(网页浏览器单点登录(SSO))
文档
API文档:Keycloak Admin REST API
管理者接口:https://www.keycloak.org/docs-api/15.0/rest-api/index.html
使用手册:http://help.daocloud.io/dcs25/keycloak-22382490.html
说明文档:https://www.keycloak.org/docs/latest/server_admin/#core-concepts-and-terms
主要概念
域(realm)
管理一组客户端(一处登录处处访问),域与域之间完全隔离。有两种域,默认 Master和新追加域。
客户端(client)
应用程序,支持通过Keycloak服务器做登录认证的实体。
角色(role)
用户的类型,分为域角色和客户端角色,用来区分不同客户端的权限。
用户(user)
做登录的实体,有自己的属性,姓名,邮箱等。
图例
访问模式
授权码模式(response_type=code)
步骤1:用户访问客户端
步骤2:客户端引导用户访问keycloak服务器(登录画面)
步骤3:用户登录,keycloak服务器引导用户携带授权码(refresh_token)回到客户端
步骤4:客户端需要用户信息时,通过(refresh_token)向keycloak服务器要访问凭证(Access Token)
步骤5:客户端通过(Access Token)得到用户信息
隐藏模式(response_type=id_token,response_type=Id_token token)
同授权码模式比,少了一步token的返回,具体是哪一个token待调查。TODO
keycloak下载安装
下载
下载地址:https://www.keycloak.org/downloads
最新(2022/12/02)20.0.1版(需要jdk11以上)
解压缩
下载的zip文件,选中一个目录,直接解压缩。
修改配置文件
环境变量不是JDK11的话,需要修改bin目录下的kc.bat文件。追加一句本地JDK11的路径配置。
keycloak修改数据库(非必须)
keycloak默认使用内置的H2数据库,为了方便管理可以修改使用的数据库
下载安装MySql
需要本地有一个MySql数据库,方法略。
创建一个空数据库
略
修改conf文件
修改keycloak的conf目录下的[keycloak.conf]文件,配置数据库信息
启动keycloak服务后刷新数据库,数据库中自动生成了一系列的表
keycloak启动
打开cmd
进入keycloak的bin目录,在目录栏输入cmd,然后回车。
启动
输入kc.bat start-dev启动
等待一会,看到DO NOT use this configuration in production,代表启动成功
另一种启动方式:可以指定ip 端口号 和ssl文件
kc.bat start-dev --hostname={ip} --https-certificate-file=../conf/ssl/server.crt --https-certificate-key-file=../conf/ssl/server.key --https-port=8080
keycloak更改启动端口号
TODO
keycloak管理界面
访问
浏览器http://localhost:8080访问
创建超级管理员
初次访问keycloak管理界面,需要创建一个超级管理员(具有Keycloak 完全权限)
登录
跳转登录
登录
设置主题
设置中文
登出
切换语言
keycloak管理界面操作
TODO