keycloak学习
keycloak 是一个针对Web应用和RESTfull Web API 提供SSO(Single Sign On:单点登陆),它是一个开源软件,源码地址是:https://github.com/keycloak/keycloak/
核心概念:
users:用户是一个可以登陆系统的实体,它可以拥有联系它们自身的属性,例如邮箱、用户名、地址、电话号码或生日等,可以为user分配组别或者角色。
authentication:相当于密码,可以验证和识别一个user。
authorization:给予用户访问的过程。
credentials:证书,可以供keycloak验证用户的东西,例如密码、一次性密码、证书、指纹等。
roles:相当于用户的一个分类 ,一个组织可能有Admin\user\manager\emplee等角色,应用程序经常会分配权限给角色,而不是用户,因为用户太难管理。
user role mapping:定义了一个用户及角色的关系,一个用户可以属于零个或多个角色,用户与角色的映射关系,这样就可以决定用在各种资源访问的权限管理。
composite roles:复合角色可以包含其他的角色,用户拥有了复合角色就相当于拥有了它下面的所有子角色。
groups:组可以一组的用户,也可以将角色映射到角色中,用户可以成为组员后继承用组的角色
realms:领域,领域管理着一批,用户、证书、角色、组等,一个用户只能属于且能登陆到一个域,域之间是互相独立的,域只能管理在它下面的用户。
clients:客户端是一个实体,可以请求keycloak对用户进行身份验证,大部分情况下,客户端是应用或服务希望使用keycloak来保护自己和提供一个单点登录的解决方案。客户端也可以是一个实体,请求身份信息或一个访问信息,这样就可以调用其他keycloak保护的应用或服务了。
client adapters:
Windows运行单实例,可以参考:https://github.com/keycloak/keycloak-quickstarts
增加-b参数是不限制客户端的IP地址
For Linux: KEYCLOAK_HOME/bin/standalone.sh -b 0.0.0.0 For Windows: KEYCLOAK_HOME\bin\standalone.bat -b 0.0.0.0
关于keycloack比较详细的配置方式,请参考:https://www.youtube.com/watch?v=ZxpY_zZ52kU
本机测试keycloak关联登陆,库地址为:https://github.com/ChenWes/keycloak-demo
第一次进入keycloak,需要先创建一个管理员帐户,这里只需要输入用户名和口令即可
首次创建帐户信息后
点击进入至administration console管理员控制台,需要输入用户名及口令进行登陆
进入至keycloak后,默认的realm是Master
为了演示与react进行关联登陆,这里我们创建一个realm
再创建一个client
在对应的realm中创建一个可登陆的user
另外,在react应用程序中,配置好keycloak的信息,并进行测试
以上,集成keycloak不是一个很难的技术,有点难度的是将keycloak挂载至云服务器,例如使用docker或K8S等技术,这个要花一点时间去处理
基于以上,keycloak是一个集成的登陆技术,即SSO一个比较好的技术
现在演示的内容,用户信息都是保存在keycloak的专用数据库中,另外,keycloak也支持用户信息是保存在其他单独的系统中的用户表中,但如何去实现,暂时还没有研究透