- Keycloak构建在WildFly应用程序服务器之上,并且它是子项目,如Infinispan(用于缓存)和Hibernate(用于持久性)。
- 一个针对现代应用程序和服务的开源身份和访问管理,为应用程序和安全服务添加最小化身份验证。无需处理存储用户或验证用户,常说的单点登录和权限控制功能可以通过它实现,开箱即用。
- 是RedHat的开源身份和访问管理解决方案
- 开发了用户管理,登录,注册,密码策略,安全问题,二步验证,密码重置等功能。登录,注册界面所需字段都是可配置,可自定义的。
- 用户角色,权限管理功能,用户组功能。用户sessions管理。
- 一个为浏览器和 RESTful Web 服务提供 SSO 的集成。基于 OAuth 2.0 和 JSON Web Token(JWT) 规范。最开始是面向 JBoss 和 Wildfly 通讯,但已经计划为其他诸如 Tomcat、Jetty、Node.js、Rails、Grails 等环境提供解决方案。
核心概念:
users:用户是一个可以登陆系统的实体,它可以拥有联系它们自身的属性,例如邮箱、用户名、地址、电话号码或生日等,可以为user分配组别或者角色。
authentication:相当于密码,可以验证和识别一个user。
authorization:给予用户访问的过程。
credentials:证书,可以供keycloak验证用户的东西,例如密码、一次性密码、证书、指纹等。
roles:相当于用户的一个分类 ,一个组织可能有Admin\user\manager\emplee等角色,应用程序经常会分配权限给角色,而不是用户,因为用户太难管理。
user role mapping:定义了一个用户及角色的关系,一个用户可以属于零个或多个角色,用户与角色的映射关系,这样就可以决定用在各种资源访问的权限管理。
composite roles:复合角色可以包含其他的角色,用户拥有了复合角色就相当于拥有了它下面的所有子角色。
groups:组可以一组的用户,也可以将角色映射到角色中,用户可以成为组员后继承用组的角色
realms:领域,领域管理着一批,用户、证书、角色、组等,一个用户只能属于且能登陆到一个域,域之间是互相独立的,域只能管理在它下面的用户。
clients:客户端是一个实体,可以请求keycloak对用户进行身份验证,大部分情况下,客户端是应用或服务希望使用keycloak来保护自己和提供一个单点登录的解决方案。客户端也可以是一个实体,请求身份信息或一个访问信息,这样就可以调用其他keycloak保护的应用或服务了。