当前位置: 首页 > 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完成认证信息的生成和管理等高级功能,支持业务各种复杂场景的使用,后面会进行介绍。

相关文章:

  • windows下tp5创建定时任务
  • 网络原理3-应用层(HTTP/HTTPS)
  • 安卓LiveData与MutableLiveData的使用
  • Excel DAYS函数怎么用,DAYS函数的使用方法来了
  • (含答案)C++笔试题你可以答对多少?
  • 探索 Python 中的 AI 魔法:markdownify 库的奥秘
  • 从安防视频监控行业发展趋势看EasyCVR平台如何驱动行业智能升级
  • makefile和CMakeLists/C++包管理器
  • vue3中echarts柱状图横轴文字太多放不下怎么解决
  • OpenCV_距离变换的图像分割和Watershed算法详解
  • 【Redis】Centos 安装 Redis
  • 橙子质量检测系统源码分享
  • 人工智能之机器学习常见算法
  • 机器学习(1)sklearn的介绍和六个主要模块、估计器、模型持久化
  • 代码随想录Day53|102.沉没孤岛 、103.水流问题 、104.建造最大岛屿
  • @angular/forms 源码解析之双向绑定
  • ECMAScript入门(七)--Module语法
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • OSS Web直传 (文件图片)
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 数据可视化之下发图实践
  • ​Java并发新构件之Exchanger
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • ​一些不规范的GTID使用场景
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • "无招胜有招"nbsp;史上最全的互…
  • # 透过事物看本质的能力怎么培养?
  • #Linux(权限管理)
  • %@ page import=%的用法
  • (3) cmake编译多个cpp文件
  • (6)设计一个TimeMap
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (vue)页面文件上传获取:action地址
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • ******IT公司面试题汇总+优秀技术博客汇总
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET+WPF 桌面快速启动工具 GeekDesk
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • @angular/cli项目构建--http(2)
  • [ C++ ] 继承
  • [3]Opengl ES着色器
  • [AI Google] Ask Photos: 使用Gemini搜索照片的新方法
  • [AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗
  • [AI资讯·0612] AI测试高考物理题,最高准确率100%,OpenAI与苹果合作,将ChatGPT融入系统中,大模型在物理领域应用潜力显现
  • [ASP]青辰网络考试管理系统NES X3.5
  • [BZOJ 3282] Tree 【LCT】
  • [C#] 基于 Token 的鉴权与签名机制详解 接口对接鉴权 token、sign(a=1b=2c=3d=4)、Base64、参数加密、MD5