# SpringBoot Migrate KeyCloak **Repository Path**: Protector_hui/SpringBoot-Migrate-KeyCloak ## Basic Information - **Project Name**: SpringBoot Migrate KeyCloak - **Description**: 学习使用KeyCloak - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-08-10 - **Last Updated**: 2023-08-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 目录 - [Keycloak](#Keycloak) - [登录](#登录) - [单点登录](#单点登录) - [第三方授权](#第三方授权) - [LDAP & AD & Cluster](#LDAP&AD&Cluster) - [支持的平台](#支持的平台) - [集成](#集成) - [Realm(领域)](#Realm) - [管理方面](#管理方面) - [主控室](#主控室) - [账户管理控制台](#账户管理控制台) - [更换密码](#更换密码) - [Session管理](#Session管理) - [登录界面](#登录界面) - [Authentication](#Authentication) - [Flows](#Flows) - [密码规则](#密码规则) - [OTP(One Time Password)](#OTP) - [用户第一次登录校验](#用户第一次登录校验) - [优缺点](#优缺点) - [优点](#优点) - [不足](#不足) - [参考资料](#参考资料) # Keycloak **Keycloak**:是针对现代应用程序和服务的开源身份和访问管理解决方案。 **目标**:**简化安全性**,使用很少甚至没有代码即可轻松保护应用程序和服务的安全。开箱即用地提供了开发人员通常必须为自己编写的安全功能,可以轻松地针对组织的个性化需求进行定制。 **提供的服务**: - 可自定义的用户界面,用于登录,注册,管理和帐户管理 - 和LDAP和Active Directory服务器做集成 - 将身份验证委派给第三方身份提供商,例如Facebook和Google # 登录方面 ## 单点登录 用户通过 **Keycloak** 进行身份验证。我们自身的应用程序不必处理登录表单,认证用户和存储用户。登录Keycloak后,用户无需再次登录即可访问其他应用程序。 **Keycloak** 提供单点注销,这意味着用户只需注销一次即可注销所有使用 **Keycloak** 的应用程序。 ## 第三方授权 通过管理控制台轻松添加启用社交网络登录的功能。只需选择要添加的社交网络即可。无需代码或更改应用程序。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200812134503901.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTkxNTMxNA==,size_16,color_FFFFFF,t_70#pic_center) - Bitbucket - Facebook - GitHub - GitLab - Google - LinkedIn - Microsoft - OpenShift 3 - OpenShift 4 - PayPal - Stack Overflow - Twitter - Instagram ## LDAP & AD & Cluster **Keycloak** 具有内置支持,可以连接到现有**LDAP**或**Active Directory**服务器。如果您在其他数据库(例如关系数据库)中有用户信息,则也可以实现自己的提供程序。 **Keycloak** 有内置存储用户信息的库,但是我们可以通过配置自己的数据库,将用户信息共享给其他的服务端。 # 支持的平台 - Windows - Docker - Podman - Kubernetes - Openshift # 集成 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200812144314492.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTkxNTMxNA==,size_16,color_FFFFFF,t_70#pic_center) # Realm(领域) ![在这里插入图片描述](https://img-blog.csdnimg.cn/202008121429433.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTkxNTMxNA==,size_16,color_FFFFFF,t_70#pic_center) # 管理方面 ## 主控室 管理员可以通过管理控制台集中管理Keycloak服务器的各个方面。 - 启用和禁用各种功能。他们可以配置身份代理和用户联合。 - 创建和管理应用程序和服务,并定义细粒度的授权策略 - 管理用户,包括权限和session ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200812135148268.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTkxNTMxNA==,size_16,color_FFFFFF,t_70#pic_center) ## 帐户管理控制台 通过帐户管理控制台 - 管理自己的帐户 - 更新配置文件 - 更改密码和设置身份验证 - 管理会话以及查看帐户的历史记录 - 如果启用了社交登录或身份代理,则用户还可以将其帐户与其他提供程序链接,以允许他们通过不同的身份提供程序向同一帐户进行身份验证 ### 更换密码 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200812143502184.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTkxNTMxNA==,size_16,color_FFFFFF,t_70#pic_center) ### Session管理 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200812143523570.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTkxNTMxNA==,size_16,color_FFFFFF,t_70#pic_center) ### 登录界面 登录界面上想要的一些常见的功能:忘记密码、多语言、记住密码、用邮箱代替用户名登录。这些功能都能通过主控制室调整,而不需要改动代码。 同时登录界面的UI也是支持更改的。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200812144720471.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTkxNTMxNA==,size_16,color_FFFFFF,t_70#pic_center) > 除了UI控制以外,Keycloak 也支持CLI & RESTFul API 两种方式进行管理。 # Authentication ## Flows 身份验证流是在登录,注册和其他Keycloak工作流程期间必须进行的所有身份验证。 拿注册作为例子,**Keyloak** 有默认的身份验证流。假如想要自定义这些校验的flow,是可以自行定义和替换的。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200812151817716.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTkxNTMxNA==,size_16,color_FFFFFF,t_70#pic_center) ## 密码规则 - **哈希算法** 密码不以明文形式存储。而是在存储或验证它们之前使用标准哈希算法对它们进行哈希处理。唯一可用的内置和默认算法是PBKDF2。 - **散列迭代** 此值指定密码在存储或验证之前被哈希的次数。默认值为27,500。 - **数字位数** 密码字符串中必须包含的数字位数。 - **小写字母的位数** 密码字符串中必须包含小写字母的数量。 - **大写字母的位数** 密码字符串中必须包含大写字母的数量。 - **特殊字符** 密码字符串中必须包含特殊字符的数量,例如'?!#%$' - **密码与用户名不能一样** - **正则表达式** 定义的密码要符合正则表达式 - **过期密码** 密码有效的天数。天数到期后,要求用户更改密码。 - **近期未使用** 此策略保存以前的密码的历史记录。存储的旧密码数量是可配置的。用户更改密码后,他们将无法使用任何旧的密码。 - **密码黑名单** ## OTP(One Time Password) Keyloack 除了固定密码外,还可以使用OTP,每次在手机上获取一次性密码进行二次登陆。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200812153707965.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTkxNTMxNA==,size_16,color_FFFFFF,t_70#pic_center) ## 用户第一次登陆校验 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200812153925985.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTkxNTMxNA==,size_16,color_FFFFFF,t_70#pic_center) # 优缺点 ## 优点 - 功能很多,常用到的基本上都覆盖了 - 安装简单,Windows版本只需要解压即可使用 - 减少了大量的代码开发 - 动态修改配置,不需要改代码 ## 不足 - 官网文档中涉及代码的例子很少,且不全。 - 目前相关资料不多 - 使用人数、社区活跃度不高 # 参考资料 [Keycloak官网](https://www.keycloak.org/documentation) [springboot整合keycloak -> 入门学习](https://www.cnblogs.com/ifme/p/12591457.html) [keycloak-quickstarts](https://github.com/keycloak/Keycloak-quickstarts)