哦豁!原来单点登陆还可以这样玩!

125 阅读4分钟

Keycloak基于smal2.0实现sso登陆操作


前言

最近在做SSO的一个功能,用到了keycloak的开源框架。下面是一些具体的操作。

了解keycloak

了解smal

本次研究的主要是keycloak21.1.2的版本,对应的JDK版本为JDK17、MySQL版本为8.0+。

对了,玩之前记得安装好对应的JDK版本哦,不然会启动失败的。

接下来就直接上干货吧

一、Windows版

1、下载并安装keycloak

官网:Keycloak

本次使用21.1.2版本

下载后找一个路径解压

解压完主要就是这几个文件进行操作,了解一下

2、启动keycloak

启动命令,在keycloak解压目录里面进行cmd

bin\kc.bat start-dev

启动成功

3、访问keycloakUI页面

首次访问keycloak页面

创建完用户后

访问管理员控制台,进行管理员账号登陆,点击上图的administration Console即可进入下面的页面

进入页面后我们看到的是master的realm界面,我们需要创建自己的realm

4、创建realm

创建成功后

5、在TestRealm里面创建客户端

配置后的client还需要细化配置,见下图

截图里面包含SpringBoot配置的SP client ID

在keys界面导出一个keystore.jps的文件,SpringBoot和keycloak交互时需要根据这个去生成请求参数

截图里面的包含SP keystore密码、SP 私钥Id、SP 私钥密码

6、创建realm用户

7、查看realm的smal2.0xml文件(idp-metadata元文件)

截图里面的URLI是dP的endpoint,比如登录、退出的时候请求用的URL,这个URL可以从idp-metadata文件中获取到;公钥是IdP的证书公钥,用于在验证SamlResponse签名,这个公钥可以从idp-metadata文件中获取到

8、配置SpringBoot的扫描文件

文章上面导出和生成的文件如上图所示

9、keycloak配置接入SpringBoot

10、vue项目构建

将Vue打包后的dist文件夹copy到SpringBoot项目中的Resource文件夹下,并重命名为static

11、部署前后端项目

这里使用的是tomcat部署,所以将上面的SpringBoot打包后,放到tomcat的webapps文件夹下,启动tomcat即可访问,进行sso测试了

二、Linux版

1、下载并安装keycloak

官网:Keycloak

本次使用21.1.2版本

下载后找一个路径解压

解压完主要就是这几个文件进行操作,了解一下

2、启动keycloak

启动前先设置一个环境变量

export KEYCLOAK_ADMIN=admin export KEYCLOAK_ADMIN_PASSWORD=admin

然后启动

bin\kc.bat start-dev

启动成功

3、访问keycloakUI页面

首次访问keycloak页面

创建完用户后

访问管理员控制台,进行管理员账号登陆,点击上图的administration Console即可进入下面的页面

进入页面后我们看到的是master的realm界面,我们需要创建自己的realm

4、创建realm

创建成功后

5、在TestRealm里面创建客户端

配置后的client还需要细化配置,见下图

截图里面包含SpringBoot配置的SP client ID

在keys界面导出一个keystore.jps的文件,SpringBoot和keycloak交互时需要根据这个去生成请求参数

截图里面的包含SP keystore密码、SP 私钥Id、SP 私钥密码

6、创建realm用户

7、查看realm的smal2.0xml文件

截图里面的URLI是dP的endpoint,比如登录、退出的时候请求用的URL,这个URL可以从idp-metadata文件中获取到;公钥是IdP的证书公钥,用于在验证SamlResponse签名,这个公钥可以从idp-metadata文件中获取到

8、配置SpringBoot的扫描文件

文章上面导出和生成的文件如上图所示

9、keycloak配置接入SpringBoot

10、vue项目构建

将Vue打包后的dist文件夹copy到SpringBoot项目中的Resource文件夹下,并重命名为static

11、部署前后端项目

这里使用的是tomcat部署,所以将上面的SpringBoot打包后,放到tomcat的webapps文件夹下,启动tomcat即可访问,进行sso测试了

三、更换数据库为MySQL--只支持MySQL8.0+版本

1、进入到keycloak的conf目录下

2、编辑keycloak.conf

3、编辑完后,对keycloak.conf进行构建生效

 bin/kc.sh build

出现下图即可进行启动

Linux版本和Windows一样

*踩坑点:Linux更换完数据库后需要重新配置环境变量添加admin账号

部分服务器可能登陆控制台的时候会报https的错误,只需要把数据库的realm表的SSL_REQUIRED字段的值改成NONE即可*

欢迎大家在评论区讨论,今天的干货分享就到此结束了,如果觉得对您有帮助,麻烦给个三连!

以上内容为本人的经验总结和平时操作的笔记。若有错误和重复请联系作者删除!!感谢支持!! ​