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也支持用户信息是保存在其他单独的系统中的用户表中,但如何去实现,暂时还没有研究透

keycloak学习的更多相关文章

  1. keycloack docker 本地运行

    参考github地址:https://github.com/jboss-dockerfiles/keycloak 首先使用git 下载该项目 使用docker-compose运行项目,需要进入至doc ...

  2. JAVA学习资源整理

    构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...

  3. Keycloak & Asp.net core webapi 整合跳坑之旅

    前言 之前,一直使用IdentityServer4作为.net core程序的外部身份认证程序,ID4的优点自不必说了,缺点就是缺乏完善的管理界面. 后来,学习java quarkus框架时,偶然遇到 ...

  4. Keycloak 团队宣布他们正在弃用大多数 Keycloak 适配器,包括Spring Security和Spring Boot

    2月14日,Keycloak 团队宣布他们正在弃用大多数 Keycloak 适配器. 其中包括Spring Security和Spring Boot的适配器,这意味着今后Keycloak团队将不再提供 ...

  5. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  6. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  7. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  8. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  9. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. linux shell学习一

    本博客参考自: http://www.cnblogs.com/waitig/p/5523409.html <shell从入门到精通>  张春晓编著 Shell简介 Shell自身是一个用C ...

  2. python 常用模块之ConfigParser

    在程序中使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在Python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是ConfigParser, Python C ...

  3. MySql 快速去重方法

    1.复制需要去重的表 CREATE TABLE 新表 LIKE 旧表 ; 2.将需要去重的字段 设置为唯一union 索引 ALTER TABLE 表名 ADD UNIQUE(`字段`); 3.复制旧 ...

  4. 福建工程学院寒假作业第一周F题

    Subsequence TimeLimit:1000MS  MemoryLimit:65536K 64-bit integer IO format:%lld   问题描述: A sequence of ...

  5. NASA: SpaceX的猎鹰9号火箭将龙飞船发射到国际空间站

    At 5:42 a.m. EDT Friday, June 29, 2018, SpaceX’s Dragon spacecraft lifts off on a Falcon 9 rocket fr ...

  6. python进阶之py文件内置属性

    前言 对于任何一个python文件来说,当python解释器运行一个py文件,会自动将一些内容加载到内置的属性中:一个模块我们可以看做是一个比类更大的对象. 查看模块的内置属性 我们先创建一个典型的p ...

  7. python并发编程之multiprocessing进程(二)

    python的multiprocessing模块是用来创建多进程的,下面对multiprocessing总结一下使用记录. 系列文章 python并发编程之threading线程(一) python并 ...

  8. windows安装linux虚拟机、修改apt源

    记录一下windows安装虚拟机以及初始配置的一些坑. 安装VMware Workstation 直接百度搜索VMware,选择合适的版本下载: 按照一般软件的安装步骤安装VMware Worksta ...

  9. __inet_insert_ifa/__inet_del_ifa

    /* 添加ip地址 主地址添加到最后一个满足范围的主地址后面 从地址添加到整个列表后面 若列表中存在与插入地址在同一子网的地址,则 要求ip地址不同且范围相同,并且插入地址认为是从地址 */ stat ...

  10. uboot makefile构建分析-续

    前言 这篇博文是 uboot makefile构建分析的续篇,继续分析uboot构建u-boot.bin的过程 构建u-boot.bin过程分析 makefile一开始,就是确定链接脚本.在构建ubo ...