UNI-SOP使用说明
UNI-SOP提供了两个集成客户端:SpringBoot2.x/JAVA1.8和SpringBoot3.x/JAVA17,满足不同项目的集成需求。
-
平台接入
使用UNI-SOP之前,业务平台需要进行接入,完成校验后才能正常使用,先引入客户端开发SKD包。
<dependency><groupId>licode.unisop.client</groupId><artifactId>uni-client-20</artifactId><version>1.0.0</version>
</dependency>
SpringBoot2.x的项目就引入20版本的客户端,如果是SprintBoot3.0就引入30版本的,引入依赖包后,还需要配置注册的平台信息(需要把业务平台注册到UNI-SOP认证中心),在application.yml文件里配置如下信息:
uni-sop:host: http://localhost:5801platform:registers:- { id: efaa79946774c60db282, secret: 28f52fdcb1502b67925543d591f5b92a }- { id: ea817e210587c4c36ed1, secret: 15ea93f7392c75b626fd0978c8d5b9e3 }
配置比较简单,说明如下:
host:UNI-SOP认证中心地址;
platform:
registers: 需要注册到认证中心的平台信息。
一个业务工程可以注册多个UNI-SOP管理的平台信息,这样有个好处就是,我们一个项目工程可以实现多个逻辑上的业务平台,一般对应到前端就是有多个。
配置好后,启动项目就会自动注册到UNI-SOP认证中心了,提供的认证中心客户端JAR包实现了自动检测平台注册功能,还有一套操作认证中心的接口,平台注册成功后会在控制台打印类似如下信息:
上面显示我们商城项目单体部署(商家、运营和商城),每个业务平台向认证中心注册的信息结果。
集成客户端后会提供如下对外接口:
这样,业务平台自动就有了操作UNI-SOP的接口功能,不需要业务平台再额外开发,可以直接提供给前端调用。
-
普通登录
普通登录是相对于单点登录而言,每次登录没有对应的会话令牌,只有独立的访问令牌,普通登录代码如下:
// 开始请求后端接口登录const loginContext: any = {category: 'account', // 账号类型为accountauthType: 'password', // 认证类型为密码username: 'licode', // 账号名称为licodeaccount: 'licode',authCode: 12312sdfsdfsdf3131, // MD5加密的密码authContext: "xxx平台", // 业务上下文(登录成功后原样保存) }const result = await userLogin(loginContext);
上述代码是一个标准的普通登录,比较简单,登录的地址为:
/uni-api/v1/auth/login
此地址是集成UNI-SOP客户端自动就有的,不用业务平台自己开发。
登录成功后返回的结果有用户信息和生成的认证信息(访问令牌和刷新令牌等),这样我们就完成了登录,然后就可以使用系统,是不是很简单。
-
单点登录
单点登录相比普通登录稍微复杂一些,不过也比较简单,UNI-SOP平台本身实现了统一管理中心,单点登录就是利用UNI-SOP的统一管理中心来完成的。
第一步,业务前端系统先重定向到UNI-SOP平台统一认证中心,代码如下:
http://localhost:6020?platform='xxx'&client_id='xxx'&client_secret='xxx'
重定向的时候带上平台ID、客户端ID和客户端秘钥就可以了。
第二步,UNI-SOP平台统一认证中心输入用户名、密码完成验证后,生成票据ticket;
第三步,UNI-SOP平台统一认证中心根据业务平台配置,重定向到业务平台指定的验证地址;
第三步,流程重新回到了我们业务前端平台,前端平台利用ticket码调用认证中心的如下接口:
/uni-api/v1/auth/token
来换取用户的登录认证信息,这样就完成一次完整的单点登录流程。
-
用户资源获取
登录用户,WEB前端需要获取用户可用的资源,包括角色、权限、菜单等,这样前端就可以根据用户拥有的资源来完成对应的操作,从而实现权限的控制,获取资源接口如下:
/uni-auth/v1/token/auth-user-assets
返回结果类型如下:
包含了角色码、菜单和权限码信息,前端可以根据用户拥有的资源完成权限控制,后台同样也会根据用户权限完成用户对相应接口的访问控制,后面会介绍业务后台接口怎么样完成权限访问控制使用。
-
登录信息查看
登录的用户我们可以在UNI-SOP认证管理中心查看,而且可以对用户完成强制退出以及对整个会话强制退出等管理功能,当然,这些操作需要有对应的权限才能完成,用户登录信息如下:
从上面我们可以直观看到用户登录了哪些平台,从哪些终端进来的,多久会超时,一目了然,非常方便。
-
业务后台权限控制
业务后台如果没有对应资源权限的控制,那么是不完整的,UNI-SOP对于业务后台资源权限的控制比较简单,直接采用注解的方式即可完成(当然也可以自己调用代码完成,不过,操作没有注解来得简单直观),代码如下:
一个HasAuthority注解就搞定,而且此注解支持SpringBoot方式的配置读取的,非常方便。其同时支持权限和角色的权限访问控制,比如上面的权限控制逻辑为:拥有角色system:admin或拥有权限mall:activity:add的用户可以访问此接口。
这就是一个使用UNI-SOP的基本的最简单的流程,当然,UNI-SOP还支持由业务平台完成对用户的验证,然后由UNI-SOP完成认证信息的生成和管理等高级功能,支持业务各种复杂场景的使用,后面会进行介绍。
相关文章:

UNI-SOP使用说明
UNI-SOP提供了两个集成客户端:SpringBoot2.x/JAVA1.8和SpringBoot3.x/JAVA17,满足不同项目的集成需求。 平台接入 使用UNI-SOP之前,业务平台需要进行接入,完成校验后才能正常使用,先引入客户端开发SKD包。 <depen…...

记录-java web 生成并下载zip文件
java生成zip文件,zip文件分两种:一种是包含文件夹、一种是不包含文件夹 生成zip文件的方式 ZipOutputStream zipOutputStream new ZipOutputStream(response.getOutputStream());// 文件夹名称String folder "download/";ZipEntry ze new Z…...

大数据集群部署文档
大数据集群部署文档 注意:需配合大数据集群启动&检查文档进行部署,以便可以检验每一个组件是否部署成功。 文章目录 大数据集群部署文档一、部署前准备1. 确保所有机器可以访问外网2. 配置root用户ssh连接3. 解决Vmware ESXi 6.5 Ubuntu虚拟机ssh连…...

HTML中的表单(超详细)
一、表单 1.语法 <!-- action:提交的地方 method:提交的方式(get会显示,post不会) --> <form action"#" method"get"><p>名字:<input name"name" ty…...

初识 C 语言(一)
目录 一、 第一个 C 程序1. printf() 函数和 stdio.h 头文件2. main() 函数和 return 语句 二、类型和变量1. C 语言中的基本类型2. 变量的创建和命名规则3. 类型和变量的大小 三、printf() 函数和 scanf() 函数1. printf() 函数的使用2. 各种类型的输出格式3. scanf() 函数的使…...

LiveNVR监控流媒体Onvif/RTSP功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大
LiveNVR监控流媒体Onvif/RTSP功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大 1、视频广场2、录像回看3、RTSP/HLS/FLV/RTMP拉流Onvif流媒体服务 1、视频广场 视频广场 -》播放 ,左键单击可以拉取矩形框,放大选中的范围ÿ…...

element ui中当el-dialog需要做全屏时,.fullscreen样式修改问题
element ui 饿了么UI中el-dialog样式修改问题 场景解决方法就是:去掉底部样式中的scoped,然后再进行页面级样式的更改即可。 场景 最近在使用element-ui时,使用到了弹窗组件: element-ui 官网链接地址: element-ui 官网链接地址…...

C++的明星之我是类001
文章目录 类类定义格式访问限定符类域 实例化实例化概念对象大小 this指针两道nt题目题目一题目二 C和C语言实现stack对比 类 类定义格式 新增一个关键字class,后加上类的名字,{}中为类的主体,类中的函数称为类的⽅法或者成员函数定义在类⾯…...

深度学习与应用:行人跟踪
**实验 深度学习与应用:行人跟踪 ** ------ **1、 实验目的** ------ - 了解行人跟踪模型基础处理流程 - 熟悉行人跟踪模型的基本原理 - 掌握 行人跟踪模型的参数微调训练以及推理的能力 - 掌握行人跟踪模型对实际问题的应用能力,了解如何在特定的场景和…...

MySQL | DATE_ADD()函数
题1: 现在运营想要查看用户在某天刷题后第二天还会再来刷题的平均概率。请你取出相应数据。 示例:question_practice_detail iddevice_idquest_idresultdate12138111wrong2021-05-0323214112wrong2021-05-0933214113wrong2021-06-1546543111right2021…...

DVWA 靶场环境搭建
作者:程序那点事儿 日期:2024/09/15 09:30 什么是DVWA: 是OWSASP官方编写的PHP网站,包含了各种网站常见漏洞(漏洞靶场),可以学习攻击及修复方式。 PHP环境包含了,Windows/Apache/Mysql/Php g…...

Autosar学习----AUTOSAR_SWS_BSWGeneral(七)
💥💥🔍 🔍 欢迎来到本博客❤️❤️💥💥 🐡优势:❤️博客内容尽量做到通俗易懂,逻辑清晰。 ⛳️座右铭:恒心,耐心,静心。 ⛳️ 欢迎一起…...

自动化测试框架集成:将Selenium集成到pytest与unittest中
目录 引言 一、Selenium简介 二、Selenium与pytest的集成 1. 安装pytest和Selenium 2. 编写测试用例 3. 运行测试 三、Selenium与unittest的集成 1. 编写测试类 2. 运行测试 四、Selenium自动化测试的最佳实践 1. 使用Page Object模式 2. 合理利用等待机制 3. 跨浏…...

华为GaussDB数据库(单机版)在ARM环境下的安装指南
一、软件版本 机器配置:8核16G,CPU: Huawei Kunpeng 920 2.9GHz操作系统:EulerOS 2.8 64bit with ARM数据库版本:GaussDB Kernel 505.1.0 build 44f4fa53 二、部署流程 2.1 新建用户 ① 以omm用户为例,添加一个omm用…...

计算机网络笔记002
### 课堂讨论对话 **学生A**: 老师,计算机网络的组成是怎样的?🤔 **老师**: 非常好的问题!计算机网络主要由硬件、软件和通信协议三部分组成。我们先从硬件开始讨论吧。 **学生B**: 硬件包括哪些设备呢?ὠ…...

Unity 的Event的Use()方法
对于Event的Use方法,其在调用后将不会再判断同类型的事件 这种情况下,第二个MosueDown不会进入,因为已经Use 如果把Use注释掉 依旧能进入第二个MosueDown 也就是说当使用了Use方法,相同的事件类型不会进第二遍...

数据分析师之Excel数据清洗
前言 目前,掌握一定的Excel技能时,怎么通过自己的技能实现数据分析的操作,就需要进行具体项目的实战,本身数据分析这个行业是非常吃经验的,既然我们是小白入坑,就需要多做实战演练,才能够实际的…...

手机解压软件加密指南:让文件更安全
在数字化时代,文件加密对于保护个人隐私和敏感信息的重要性不言而喻。随着互联网的飞速发展,我们的生活和工作越来越依赖于数字设备和网络。 然而,这也带来了一系列的安全风险,如黑客攻击、数据泄露等。文件加密技术成为了保护我…...

python yield generator 详解
目录 generator基础 generator应用 generator基础应用 generator高级应用 注意事项: 正文 本文将由浅入深详细介绍yield以及generator,包括以下内容:什么generator,生成generator的方法,generator的特点&#…...

MATLAB矩阵下标引用
在MATLAB中,普通的二维数组元素的数字索引分为双下标索引和单下标索引。双下标索引是通过一个二元数组对来对应元素在矩阵中的行列位置,例如A(2,3)表示矩阵A中第2行第3列的元素。单下标索引的方式是采用列元素优先的原则,对m行n列的矩阵按列排…...

syn洪水攻击原理是什么
在网络世界中,正常的网络访问就像一场有序的对话。当我们访问网站时,客户端与服务器要进行 TCP 三次握手来建立连接。首先,客户端向服务器发送一个 SYN 包,请求建立连接,这就如同向服务器打招呼说“我想连接”…...

前缀和(4)_除自身以外数组的乘积
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 前缀和(4)_除自身以外数组的乘积 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌 目录…...

第二十一节:学习Redis缓存数据库的Hash操作(自学Spring boot 3.x的第五天)
这节记录下Redis的Hash操作。主要是opsForHash方式和boundHashOps方式。 boundHashOps和opsForHash都是Spring Data Redis中用于操作Redis哈希数据结构的方法,但它们在使用方式和场景上存在一些区别。 boundHashOps 使用方式: boundHashOps方法通过Redi…...

OpenCV视频I/O(1)视频采集类VideoCapture介绍
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 用于从视频文件、图像序列或摄像头捕获视频的类。 该类提供了用于从摄像头捕获视频或读取视频文件和图像序列的 C API。 以下是该类的使用方法&a…...

CVE-2024-46103
前言 CVE-2024-46103 SEMCMS的sql漏洞。 漏洞简介 SEMCMS v4.8中,SEMCMS_Images.php的search参数,以及SEMCMS_Products.php的search参数,存在sql注入漏洞。 (这个之前就有两个sql的cve,这次属于是捡漏了Ƕ…...

三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...)
三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询…) 文章目录 三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...)1. …...

Linux 冯诺依曼体系结构与操作系统概念
目录 0.前言 1. 冯诺依曼体系结构概述 1.1 输入单元 1.2 中央处理单元(CPU) 1.3 输出单元 2. 冯诺依曼体系结构的关键特性 2.1 所有数据流向内存 2.2 数据流动示例:QQ聊天过程 3. 操作系统 3.1 概念 3.2 设计操作系统的目的 3.3 操作系统的“…...

UE4中 -skipbuild -nocompile 有什么区别
在项目开发中,我看到了在调用 Engine\\Build\\BatchFiles\\RunUAT.bat 相关的命令行中,有 -skipbuild、 -nocompile 两个很像的参数,于是想探究一下它们的区别与含义。 -skipbuild 参数 到底有没有 -skipbuild 这个参数?根据 http…...

k8s篇之数据挂载类型及区别
一、K8S集群数据挂载类型及区别 在 Kubernetes 中,数据挂载类型主要有以下几种,每种类型适用于不同的场景。以下是主要的挂载类型及其应用场景的详细说明: 1. emptyDir 描述:emptyDir 是一个空目录,其生命周期与 Pod 相同。 它在 Pod 创建时被创建,并在 Pod 删除时被清…...

LiveQing视频点播流媒体RTMP推流服务功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大
LiveQing视频点播流媒体RTMP推流服务功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大 1、鉴权直播2、视频点播3、RTMP推流视频直播和点播流媒体服务 1、鉴权直播 鉴权直播-》播放 ,左键单击可以拉取矩形框,放大选中的范围&#x…...