当前位置: 首页 > news >正文

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

记录-java web 生成并下载zip文件

java生成zip文件&#xff0c;zip文件分两种&#xff1a;一种是包含文件夹、一种是不包含文件夹 生成zip文件的方式 ZipOutputStream zipOutputStream new ZipOutputStream(response.getOutputStream());// 文件夹名称String folder "download/";ZipEntry ze new Z…...

大数据集群部署文档

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

HTML中的表单(超详细)

一、表单 1.语法 <!-- action&#xff1a;提交的地方 method&#xff1a;提交的方式&#xff08;get会显示&#xff0c;post不会&#xff09; --> <form action"#" method"get"><p>名字&#xff1a;<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、视频广场 视频广场 -》播放 &#xff0c;左键单击可以拉取矩形框&#xff0c;放大选中的范围&#xff…...

element ui中当el-dialog需要做全屏时,.fullscreen样式修改问题

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

C++的明星之我是类001

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

深度学习与应用:行人跟踪

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

MySQL | DATE_ADD()函数

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

DVWA 靶场环境搭建

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

Autosar学习----AUTOSAR_SWS_BSWGeneral(七)

&#x1f4a5;&#x1f4a5;&#x1f50d; &#x1f50d; 欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f421;优势&#xff1a;❤️博客内容尽量做到通俗易懂&#xff0c;逻辑清晰。 ⛳️座右铭&#xff1a;恒心&#xff0c;耐心&#xff0c;静心。 ⛳️ 欢迎一起…...

自动化测试框架集成:将Selenium集成到pytest与unittest中

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

华为GaussDB数据库(单机版)在ARM环境下的安装指南

一、软件版本 机器配置&#xff1a;8核16G&#xff0c;CPU: Huawei Kunpeng 920 2.9GHz操作系统&#xff1a;EulerOS 2.8 64bit with ARM数据库版本&#xff1a;GaussDB Kernel 505.1.0 build 44f4fa53 二、部署流程 2.1 新建用户 ① 以omm用户为例&#xff0c;添加一个omm用…...

计算机网络笔记002

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

Unity 的Event的Use()方法

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

数据分析师之Excel数据清洗

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

手机解压软件加密指南:让文件更安全

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

python yield generator 详解

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

MATLAB矩阵下标引用

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

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...