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

【服务器】身份认证系统(三)什么是OAuth2 + oauth的权限系统(鉴权系统)

身份系统(三)什么是OAuth2

本文摘自:https://www.cnblogs.com/meibaorui/p/9182660.html

本文准备用最简单的语言告诉大家什么是OAuth2 ,OAuth2是干什么的。

我们有一个资源服务器,资源服务器中有一系列的用户数据。

现在有一个应用想想要获取我们的用户数据。


那么最简单的方法就是我们开发一个API。

可是某天来了个恶意应用,或者是我们不想给它数据的应用,我们就会造成数据的泄漏。

所以我们就需要对第三方的应用进行校验,比如最原始的方法是使用IP地址,如果是不认识的IP地址就不给他资源。

可是这种方案有两个严重的缺点:

1、当客户应用换了IP地址之后,我们也要同时维护更换IP地址。

2、当客户应用是分布式部署很多份的时候,我们就要为同一个用户维护很多份IP地址。

3、ip是可以伪装的。

这样无疑是繁琐麻烦、难以维护的。

所以一般业界的解决方案是给予客户应用一个“出入证”——专业称为访问令牌(Access Token)。如果来访问的客户应用带有合法的访问令牌,则可以给他数据,否则便拒绝。


那么Access Token哪里来的呢?我们一般是由一个授权服务器颁发的。每个允许其访问资源的客户应用都现在我们的系统中注册一个appkey,然后每次用这个appkey向我们的授权服务器申请Access Token。这样不论客户应用换不换ip、有多少ip,只要客户应用的appkey是唯一不变的就不用做任何修改,也不用担心ip伪装的问题。

到此为止我们其实还面临着一个问题,那就是当我们获取用户数据的时候,虽然我们允许第三方的客户应用获取用户数据,用户本人却不一定允许。比如,用户在我们系统里存储了图片、文档、视频等数据,用户只允许第三方应用获取他的文档,而不允许第三方应用获取他的图片和视频。所以在我们颁发给客户应用相关权限的Access Token的时候,需要经过用户的同意。

OAuth2.0本质上就是将这里的客户应用向授权服务器请求令牌与授权服务器颁发令牌的过程标准化了,根据这样一套标准与解决方案,我们就可以安全的让第三方应用访问存储在我们服务器上的用户数据了。

oauth2.0权限系统 实战

摘自:https://cloud.tencent.com/developer/article/1474214

今天一兄弟找小编发布一个关于oauth2.0权限系统,小编亲测。感觉非常棒。大家多多start,多多支持。

码云地址:https://gitee.com/mark-steven/oauth2.0

oauth2.0

介绍

OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。oAuth是Open Authorization的简写。

软件架构

  1. 后端:SpringBoot2.1.3 + Spring + SpringMvc + Mybatis
  2. 安全框架:SpringSecurity + oauth2.0
  3. 前端框架:dhtmlx + LayUi(dhtmlx组件是由位于俄罗斯圣彼得堡的DHTMLX公司开发的,适用于B/S模式的Web应用开发)

启动教程

  1. ApiApplication 先启动api接口
  2. ResourceApplication 在启动静态资源
  3. ManageApplication 启动前端页面

登录账户:admin 密码:123456

oauth2.0请求流程

获取access_token

业务中配置如下

请求链接:
http://localhost:8080/oauth/token?
grant_type=password&client_id=client&client_secret=123456
&username=admin&password=123456

1.grant_type:必填。参数值必须是"authorization_code",这边是password密码认证类型填"password".

2.client_id:客户端标识,如果没有其它的客户端认证存在的话这个参数是必须的,这边命名为”client”..

3.client_secret:请求中加一个client_secret参数来对客户端进行认证,这边是用"123456".

4.username:登录的用户名,这边是用"admin".

5.password:登录的密码,这边是用"123456".

携带access_token请求接口

我这边随便一个接口地址拼接access_token去请求系统的接口 请求链接:http://localhost:8080/api/dev/param/category/list?&access_token=2a74e2ed-e547-4a31-8cd4-4948e1145976

期望 | Futures

欢迎提出更好的意见,帮助完善oauth2.0系统

ER逻辑图 | License

界面截图

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Vue.js】Vue 学习笔记
  • 【粘包和拆包】数据帧粘包和拆包处理方式
  • 【网关】什么是网关、网桥和交换机(集线器、网桥、交换机、路由器、网关大解析)...
  • 【软件设计】架构设计 分析组件化与模块化之间的区别
  • 【word】word 笔记
  • 【前端】webpack、npm、node、nodejs之间的关系
  • 【Vue】前端的单页面模式和多页面模式
  • 【软件架构】运用RUP 4+1视图软件架构设计(逻辑视图、实现视图、进程视图、物理视图和用例视图)...
  • 【软件架构】软件的设计图纸(用例图,类图,状态图,活动图,顺序图)
  • 【nginx】linux nginx 部署静态网页
  • 【servlet】servlet技术是否过时?
  • 【vue】vue.js不就是一个文件吗?安装vue是什么意思?
  • 【Vue】Vue引入bootstrap的方法
  • 【vue】vue发布
  • 阿里云ECS端口8080访问不了问题排查
  • 网络传输文件的问题
  • 收藏网友的 源程序下载网
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • 【知识碎片】第三方登录弹窗效果
  • CSS 提示工具(Tooltip)
  • Fastjson的基本使用方法大全
  • FastReport在线报表设计器工作原理
  • javascript从右向左截取指定位数字符的3种方法
  • JavaScript函数式编程(一)
  • Java反射-动态类加载和重新加载
  • Python - 闭包Closure
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Service Worker
  • Spring Boot MyBatis配置多种数据库
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • vue 配置sass、scss全局变量
  • 和 || 运算
  • 简析gRPC client 连接管理
  • 离散点最小(凸)包围边界查找
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 实现菜单下拉伸展折叠效果demo
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 在Docker Swarm上部署Apache Storm:第1部分
  • Linux权限管理(week1_day5)--技术流ken
  • 阿里云ACE认证之理解CDN技术
  • ​linux启动进程的方式
  • ‌移动管家手机智能控制汽车系统
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #微信小程序:微信小程序常见的配置传旨
  • (7)STL算法之交换赋值
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (TOJ2804)Even? Odd?
  • (附源码)计算机毕业设计ssm电影分享网站
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (九)c52学习之旅-定时器
  • (排序详解之 堆排序)
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)程序员技术练级攻略
  • (状压dp)uva 10817 Headmaster's Headache