当前位置: 首页 > 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列的矩阵按列排…...

别再死记硬背了!用这5个真实项目案例,彻底搞懂Python函数参数与返回值

别再死记硬背了&#xff01;用这5个真实项目案例&#xff0c;彻底搞懂Python函数参数与返回值 函数是Python编程的基石&#xff0c;但很多初学者在学完基础语法后&#xff0c;面对实际项目依然无从下手。本文将通过5个真实开发场景&#xff0c;带你从"会用"到"懂…...

保姆级教程:用CH34xSerCfg修改USB转串口芯片的VID/PID,解决驱动冲突和串口号固定问题

嵌入式开发实战&#xff1a;用CH34xSerCfg定制USB转串口设备标识与驱动管理 当你的工作台上同时连接着五个相同型号的USB转TTL模块&#xff0c;Windows设备管理器里COM端口像走马灯一样随机变换编号时&#xff1b;当团队协作开发中&#xff0c;每个成员需要固定识别自己的调试设…...

用Python复现FAST天眼数学建模:从坐标变换到促动器伸缩量计算(附完整代码)

用Python复现FAST天眼数学建模&#xff1a;从坐标变换到促动器伸缩量计算&#xff08;附完整代码&#xff09; 中国天眼FAST作为全球最大单口径射电望远镜&#xff0c;其主动反射面调节系统堪称现代工程奇迹。当观测不同方位天体时&#xff0c;需要通过促动器精确控制4450块反射…...

Swagger2Word终极指南:3种方法实现API文档自动化转换

Swagger2Word终极指南&#xff1a;3种方法实现API文档自动化转换 【免费下载链接】swagger2word 项目地址: https://gitcode.com/gh_mirrors/swa/swagger2word 还在为手动编写API文档而烦恼吗&#xff1f;Swagger2Word为你提供了一站式自动化解决方案&#xff0c;将Swa…...

构建本地化个人助理系统:事件驱动架构与模块化设计实践

1. 项目概述&#xff1a;一个高度可定制的个人助理系统最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Personal-Assistant”&#xff0c;作者是idk-man69。光看名字&#xff0c;你可能会觉得这又是一个类似Siri或Google Assistant的语音助手&#xff0c;但点进去仔细研…...

手机号归属地查询系统:3步构建可视化定位工具

手机号归属地查询系统&#xff1a;3步构建可视化定位工具 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mirrors/lo/l…...

MySQL 索引底层 B+ 树原理

聊 MySQL 索引&#xff0c;不讲 B 树&#xff0c;那就是在耍流氓。 大家好&#xff0c;我是乱码字符。今天咱们深入聊聊 MySQL 索引的底层数据结构——B 树。这篇文章能让你彻底搞明白&#xff0c;为什么有时候明明加了索引&#xff0c;查询却还是慢成狗。 先说说为什么要用树结…...

VS Code光标主题定制指南:提升开发效率与视觉舒适度

1. 项目概述&#xff1a;一个为开发者量身定制的光标主题集合如果你和我一样&#xff0c;每天有超过8个小时的时间是在代码编辑器里度过的&#xff0c;那么你一定对那个在屏幕上闪烁的光标再熟悉不过了。它不仅仅是文本插入点&#xff0c;更是我们思维在数字世界中的延伸。然而…...

基于LLM与视觉模型融合的智能体框架:从原理到工业质检实践

1. 项目概述&#xff1a;当AI学会“看”与“想”最近在探索AI与视觉结合的落地场景时&#xff0c;我深度体验了landing-ai/vision-agent这个项目。它不是一个简单的图像识别工具&#xff0c;而是一个试图让AI具备“视觉推理”能力的智能体框架。简单来说&#xff0c;它让AI不仅…...

Cursor编辑器状态快照插件开发:一键保存与恢复工作区

1. 项目概述&#xff1a;一个专为开发者设计的“后悔药”如果你是一名重度使用 Cursor 编辑器的开发者&#xff0c;那么你一定经历过这样的场景&#xff1a;在沉浸式编码时&#xff0c;为了快速定位或修改&#xff0c;你可能会频繁地使用CtrlClick跳转到函数定义&#xff0c;或…...