(二)keycloak 基本配置运行

系列目录

(一)keycloak 部署运行及源码打包
(二)keycloak 配置运行
(三)keycloak 基于SpringBoot、Servlet的客户端开发
(四)keycloak 自定义用户(SPI)开发
(五)keycloak 自定义主题
(未完成)(六)keycloak 添加登录验证码功能
(七)keycloak 设置客户端访问类型 bearer-only
(八)keycloak 设置客户端访问类型 confidential
(九)keycloak使用nginx来配置https



前言

keycloak是一套完整的开源认证授权管理解决方案,由红帽开发,提供了多种语言库,方便集成。本系列教程以使用为主,介绍keycloak的搭建,源码编译,以及部分功能的二次开发。

keycloak官网提供了详细的教程以及示例,可以参考官网示例进行编写开发。
官网地址 本系列教程基于官网最新版本18.0进行编写。

本章内容接 上一篇 (一) keycloak 部署编译 继续,主要介绍keycloak最基本的使用


一.使用自己的数据库(mysql)

默认情况下keycloak会将用户数据默认存储在内置的h2数据库中,一般我们在生产环境中都会有自己的数据库,并将数据对接到我们自己的数据库中,下面我们介绍下,如果使用自己的数据库来配置运行。

由于widlfy官方已废弃,后面的内容我们仅以quarkus框架的运行方式来介绍。
打开keycloak的目录,找到 conf文件夹,文件夹中有一个 keycloak.conf 文件,编辑该文件

在这里插入图片描述
按上图内容进行配置,其中数据库需要提前创建好,我们这里创建了一个名为 keycloak的数据库。

运行 bin/kc.bat start-dev 等待系统启动好后, 回到数据库中,可以看到keycloak中自动生成了一系列的表。

二. 配置

打开浏览器,输入地址 http://127.0.0.1:8080/,输入管理员的账号和密码后进入控制台。

名词介绍

在介绍配置前,我们先简单的说下常用的几个名词:

  • realm即代表一个域,可以简单的理解为一整个单点登录的系统 每个realm的用户都是互相隔离的
  • client 可以理解为子系统,每个子系统都使用对应realm的同一套用户和角色
  • role 角色,用户的角色,可以为每个client设置允许的角色
  • user 用户,realm中所有子系统的公共用户

2.1 界面语言(国际化)

系统默认是英文界面,我们可以在 Realm settings的themes中设置成中文界面,
在这里插入图片描述
开启上图中的国际化,选中zh-CN,(截图中其他语言被我删除了,仅供参考)
在这里插入图片描述
保存后刷新页面,系统就自动切换成了中文界面,当然这里的国际化设置不仅仅是针对控制台的界面,后面我们创建自己的client也可以在这里实现国际化操作。

2.2 创建realm(域)

场景

刚才我们说到一个realm即一个域,一个域我们可以将他理解为一个单点登录系统(包含所有子系统)。
我们设定场景如下:

1.当前有一个测试系统,名为test
3.test系统包含了 testAtestB两个子系统
3.通过对接keycloak,实现登录任意一个子系统,另一个系统自动登录。退出任一个子系统,另一个子系统也自动退出
4.两个子系统共享一套用户

创建Realm

我们先创建一个名为test的realm。
点击添加域,输入域名称 test,点击创建按钮
在这里插入图片描述在这里插入图片描述

配置Realm

创建realm成功后系统会自动切换到Test域的设置中
在这里插入图片描述在这里我们可以设置显示名称和html显示名称,这两个字段非必填。
服务路径对应内容为: OIDC和SAML2.0 协议的详细信息,点击可以查看详细配置信息。关于这两个协议我们暂时先不介绍,你可以自行百度搜索这两个协议。

我们下面的文章中,默认都以OIDC 协议为例。

Realm常用配置标签

对于领域设置菜单 的标签,我们简单介绍下常用的

在这里插入图片描述

  • 通用 标签,就是刚才我们设置的部分,设置realm的基本信息
  • 登录 标签,主要配置登录相关选项,比如是否显示用户注册按钮,是否显示忘记密码按钮等,根据你自己的需求设置即可
    在这里插入图片描述
  • 主题 标签,这个标签下主要是配置自定义的用户界面,以及刚才我们介绍的国际化,如果你配置了自定义主题,这里就可以进行选择,后面我们会专门介绍此内容
    在这里插入图片描述
  • 安全防护 标签 ,这里可以设置 iframe跨域,以及暴力检查,我们主要使用暴力检测内容。
    在这里插入图片描述
    如上图配置,开启暴力检测后,如果用户在12小时内连续登录失败30次,则会锁定1分钟,这个等待增量和登录失败次数是成比例递增的。

等待增量: 锁定时长基准值
Max Wait 最大锁定时长
故障复位时间 登录失败次数重置时间,即经过该配置项配置的时长后,账号的登录失败次数将被重置为0,否则继续累加。

计算结果如下:
实际锁定时长 = 等待增量 x (当前登录失败次数 / 最大登录失败)

其中 (当前登录失败次数 / 最大登录失败) 的结果向下取整,如:1/2=0; 3/2=1

按照上述截图中的配置

12小时内,同一账号,

连续登录失败次数到达30次,将锁定该账号 1*(30/30)=1分钟。

连续登录失败次数到达60次,将锁定该账号 1*(60/30)=2分钟。

此段内容详情可参考 :
https://my.oschina.net/u/4058864/blog/2995506

2.3 创建client(客户端)

client即每个realm的客户端,我们可以简单理解为子系统,这里我们创建两个client,TestA和TestB
点击左侧 客户端 菜单,进入客户端列表界面,系统默认已经创建了一些。

创建client

在页面的右上角点击创建按钮。

在这里插入图片描述
在这里插入图片描述
参考上图配置,根URL换成你自己的项目地址,协议我们使用OIDC。保存完成后,系统自动跳转到TestA的详细设置页面。

配置client

这里我们说下client设置页面最常用的两个标签
在这里插入图片描述

  • 设置 标签,主要用来配置客户端的通用配置
    在这里插入图片描述
    在设置标签下,通常我们只要设置这几个即可。
    关于访问类型字段有3个类型

    • public 适用于客户端应用,且需要浏览器登录的场景。典型的使用场景就是前端web系统,包括采用vue、react实现的前端项目等。
    • confidential 适用于服务端应用,且需要浏览器登录以及需要通过密钥获取access token的场景。典型的使用场景就是服务端渲染的web系统。
    • bearer-only 适用于服务端应用,不需要浏览器登录,只允许使用bearer token请求的场景。典型的使用场景就是restful api。
      此处我们选择public,其他内容保持默认即可。
  • 作用域 标签,用来配置客户端的角色,我们放到下一步角色中一起介绍
    在这里插入图片描述

2.4 角色

创建角色

创建一个用户角色,用来控制用户url能否被访问
点击左侧 角色 菜单,在列表页面点击右上角的添加角色按钮
在这里插入图片描述
我们创建一个名叫 base_user 的角色
在这里插入图片描述

设置默认角色

回到角色设置的主菜单页面,点击 默认角色 标签
在这里插入图片描述
将我们刚才设置的 base_user 角色设置为默认角色,设置默认角色这一步可以不用操作,我们这里设置的目的是为了后面接入自己的用户表时省事
默认角色的意思是,创建的用户都会默认具备此角色。

关联角色

角色创建好后,现在就需要将客户端和角色进行关联了。否则用户登录进去后会提示没有权限。
点击左侧 客户端 菜单,在右侧的 作用域 标签下选择我们刚才创建的 base_user 角色
在这里插入图片描述
这样,我们的角色就创建并且关联成功了。

2.5 用户

最后一步,我们需要创建一些用户。本篇内容,我们只介绍在keycloak系统中创建用户,后面会单独拿出一篇来写如何接入我们自己的现有用户。

创建用户

点击左侧菜单 用户,点击右上角的添加用户按钮
在这里插入图片描述

这里我们创建一个名为test的用户,注意下,表单中的用户姓名和国内使用习惯不一样。
在这里插入图片描述
最后一个,必需的用户操作 该字段还定义了用户第一次登录后需要执行的操作,比如强制修改密码等等。
根据你自己的情况设置即可
在这里插入图片描述

设置密码

创建好用户后,我们就需要设置一个用户密码了,打开第三个 凭据 标签,在下方的密码框中输入密码,关闭临时 开关,然后点击 Set Password 按钮。
在这里插入图片描述
设置成功即可,修改密码也是在此处修改。

设置角色映射

用户添加完成后,需要对用户进行角色映射,我们把之前创建的base_user 角色赋给test用户
打开 角色映射 标签,在可用角色中选择 base_user 添加即可
在这里插入图片描述


总结

这样我们就完成了一个最基础的keycloak的配置,下一章节我们将开发一个客户端,并连接到刚才配置的realm上

  • 11
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChangSir-86

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值