授权协议OAuth 2.0之如何接入授权服务

写在前面

为了能够更好以场景化的方式来理解OAuth2.0,本文一起看下,假定我们现在要开发一个交友类软件,为了提高用户登录的便利程度,需要对接微信开放平台,获取到用户的微信账号信息,作为用户的注册信息来使用,此时结构如下图:
在这里插入图片描述
交友软件应用最终要做的就是如图粉红色背景所示的内容,即通过令牌获取,微信账号信息,那么为了做到这点,交友软件应用的开发人员需要做哪些事情呢?

1:注册成为开发者

在能够调用授权服务的接口之前,我们一定要先让自己有一个合法的身份,因此第一步就需要在微信开放平台,注册成为开发者,可能如下图:
在这里插入图片描述
其实这个过程就是在某个平台上注册一个账号,只不过这里我们是用于后续的开发使用,所以叫做开发者账号。

2:创建应用

注册成为开发者之后,就需要创建一个应用来代表交友软件了,在这个过程中我们会拿到app_id,app_secret,等信息用于后续的申请令牌access_token的流程。
在这里插入图片描述

到这一步,编码前的准备工作就都完成了,一般需要等待审核,审核完毕之后,就可以正式进入编码流程了。

后续的流程可以参考演示视频:

OAuth2.0整个流程代码实现,并运行,进行代码演示

3:引导用户授权

此时为了让用户授权,我们需要开发一个页面来提示用户授权,比如:
在这里插入图片描述

4:在授权服务器的授权操作

这个不需要开发,因为是授权服务的内容,但为了流程的完整性,也放在这里,你在实际开发中知道就行。

接着会跳转到授权服务的授权页面,提醒用户进行真正的授权:
在这里插入图片描述

5:开发回调接口接收授权code,并换取令牌

这个需要交友软件的后台开发同学开发一个回调接口,来接收授权服务平台回调的授权码,然后换取令牌,代码可能如下:

@RequestMapping("/receiveAuthCode")
@ResponseBody
public String receiveAuthCode(HttpServletRequest request) {//授权码许可流程,DEMO CODEString code = request.getParameter("code");Map<String, String> params = new HashMap<String, String>();params.put("code", code);params.put("grant_type", "authorization_code");params.put("app_id", "APPID_RABBIT");params.put("app_secret", "APPSECRET_RABBIT");System.out.println("start post code for token ...");String accessToken = HttpURLClient.doPost(oauthURl, HttpURLClient.mapToStr(params));System.out.println("accessToken:" + accessToken);return "成功拿到了access_token: " + accessToken + ", 接着就可以拿来访问受保护资源了!";
}

6:使用令牌获取受保护资源

推荐使用post表单方式,当然也可以使用header方式,如下:

GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer b1a64d5c-5e0c-4a70-9711-7af6568a61fb

uri方式也是一种选择,如:

GET /resource?access_token=b1a64d5c-5e0c-4a70-9711-7af6568a61fb HTTP/1.1
Host: server.example.com

但因为安全性低,所以一般不采用。

7:令牌刷新

令牌刷可以考虑定时刷新和用时发现过期刷新两种。前者有额外的开发工作量,后者则没有额外的工作量。具体可以根据实际情况来作出选择。但一般更推荐定时刷新。

写在后面

参考文章列表

多知道一点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/626769.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用SpringBoot将中国地震台网数据保存PostGIS数据库实践

目录 前言 一、数据转换 1、Json转JavaBean 2、JavaBean与数据库字段映射 二、空间数据表设计 1、表结构设计 三、PostGIS数据保存 1、Mapper接口定义 2、Service逻辑层实现 3、数据入库 4、运行实例及结果 总结 前言 在上一篇博客中基于Java的XxlCrawler网络信息爬…

判断二叉树是否对称

解题思路&#xff1a;首先判断特殊情况&#xff0c;比如左右子树是否为一空一有&#xff0c;是否为两空&#xff0c;是否相等&#xff0c;然后递归判断外侧是否相等&#xff08;即为左子树的左节点和右子树的右节点&#xff09;和内侧是否相等&#xff08;即为右子树的左节点和…

LeetCode 289.生命游戏————2024 春招冲刺百题计划

根据 百度百科 &#xff0c; 生命游戏 &#xff0c;简称为 生命 &#xff0c;是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子的面板&#xff0c;每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态&#xff1a; 1 即为 活细胞 &am…

【LeetCode热题100】【回溯】单词搜索

题目链接&#xff1a;79. 单词搜索 - 力扣&#xff08;LeetCode&#xff09; 要在一个二维数组里面找到一条单词路径&#xff0c;可以先遍历二维数组找到单词入口&#xff0c;然后往上下左右深度遍历&#xff0c;访问过的元素直接修改成字符串结束符&#xff0c;访问完改回去 …

荣誉 | 人大金仓获评轨交行业“智慧运维优秀应用案例”

4月12日至13日&#xff0c;2024&#xff08;第八届&#xff09;中国城市轨道交通智慧运维大会在成都顺利举行。会上&#xff0c;人大金仓以其在轨交行业的卓越贡献和创新实践&#xff0c;获评“智慧运维优秀应用案例”。公司副总裁梁红凤出席大会并发表了题为“打造世界一流的数…

XXL-JOB v2.4.1 版本正式发布!

v2.4.1 Release Notes 1、【优化】多个项目依赖升级至较新稳定版本&#xff0c;涉及 netty、groovy、springboot、mybatis 等&#xff1b;2、【修复】“CVE-2022-43402” groovy 低版本漏洞修复。3、【修复】“CVE-2024-29025” netty 低版本漏洞修复。4、【修复】“CVE-2024-…

kali工具----枚举工具

一、枚举工具 枚举是一类程序&#xff0c;它允许用户从一个网络中收集某一类的所有相关信息。本节将介绍DNS枚举和SNMP枚举技术。DNS枚举可以收集本地所有DNS服务和相关条目。DNS枚举可以帮助用户收集目标组织的关键信息&#xff0c;如用户名、计算机名和IP地址等&#xff0c;…

最新的网易星球GEC挖矿系统修复版 章鱼星球挖矿系统源码 区块链虚拟币交易源码 基于ThinkPHP5开发

区块链系统介绍 2018.12.10更新增加聚合数据短信接口 2018.11.19更新增加短信宝接口 2018.08.17修复Linux系统搭建验证码不显示问题 2018.08.09修复后台某处溢出数据库账号密码BUG 2018.08.06修复票卷BUG 源码介绍&#xff1a; 区块链系统中用户共九个等级&#xff0c;依…

ECA-Net:深度卷积神经网络中的高效通道注意力机制【原理讲解及代码!!!】

ECA-Net&#xff1a;深度卷积神经网络中的高效通道注意力机制 在深度学习领域&#xff0c;特别是在深度卷积神经网络&#xff08;DCNN&#xff09;中&#xff0c;注意力机制已经成为提升模型性能的关键技术之一。其中&#xff0c;ECA模块&#xff08;Efficient Channel Attent…

数字乡村探索:引领农村未来发展新方向——科技创新赋能乡村现代化与农民生活品质提升之旅

目录 一、数字乡村的内涵与特点 二、数字乡村的探索进展 三、数字乡村面临的挑战与机遇 四、数字乡村的未来发展方向与路径 五、数字乡村助力农村产业升级 六、数字乡村促进城乡融合发展 七、数字乡村激发农民创新创业活力 八、数字乡村提升农民获得感和幸福感 九、展…

35. UE5 RPG制作火球术技能

接下来&#xff0c;我们将制作技能了&#xff0c;总算迈进了一大步。首先回顾一下之前是如何实现技能触发的&#xff0c;然后再进入正题。 如果想实现我之前的触发方式的&#xff0c;请看此栏目的31-33篇文章&#xff0c;讲解了实现逻辑&#xff0c;这里总结一下&#xff1a; …

租赁系统成品|租赁小程序开发|租赁软件开发功能

在当前数字化时代&#xff0c;在线租赁平台成为了企业发展的重要推动器。本文将探讨在线租赁平台的特点与优势&#xff0c;以及其对用户和商家的租赁体验带来的影响。 首先&#xff0c;每个在线注册用户都需要通过实名身份验证进行在线身份验证。这项安全措施可以更好地保护租户…