OAuth2 认证流程详解

前言技术之Oauth2全方面介绍 一、Oauth2基本概念 1、定义 Oauth2是目前最流行的授权机制,用来授权第三方应用,获取用户数据 2、场景带入 1、外卖场景 一户人家住在一个大型居住小区,小区有门禁系统,进入小区需要输入密码,这户人家经常性点外卖,必须让外卖人员进入到小区,如果把密码告诉外卖人员,这样的话,他就和户主拥有了一样的权限,这样安全隐患太大,给了外面人员密码之后,为了安全,必须要进行修改密码,这就很麻烦。 这时候Oauth2就诞生了,外卖人员的职责只是送货,没必要知道小区密码 ... 阅读详情

很多网站、APP 弱化甚至没有搭建自己的账号体系,而是直接使用社会化登录的方式,这样不仅免去了用户注册账号的麻烦、还可以获取用户的好友关系来增强自身的社交功能。

比如我们可以使用微博登录简书,简书会自动将你的微博头像设置为你的简书头像,将你的微博昵称设置为你的简书昵称,甚至还可以获取你微博中的好友列表,提示你哪些朋友已经在使用简书,这是如何做到的呢?

最传统的办法是让用户直接在简书的登录页面输微博的账号和密码,简书通过用户的账号和密码去微博那里获取用户数据,但这样做有很多严重的缺点:

  1. 简书需要明文保存用户的微博账号和密码,这样很不安全。
  2. 简书拥有了获取用户在微博所有的权限,包括删除好友、给好友发私信、更改密码、注销账号等危险操作。
  3. 用户只有修改密码,才能收回赋予简书的权限。但是这样做会使得其他所有获得用户授权的第三方应用程序全部失效。
  4. 只要有一个第三方应用程序被破解,就会导致用户密码泄漏,以及所有使用微博登录的网站的数据泄漏。

为了解决以上的问题,OAuth 协议应运而生。

原理概要

新浪微博作为服务提供商,拥有用户的头像、昵称、邮箱、好友以及所有的微博内容,简书希望获取用户存储在微博的头像和昵称,假设它们是三个人:

  1. 简书问新浪微博:我想要获取用户 A 的头像和昵称,请你提供
  2. 微博说:我需要经过用户A 本人的许可,然后去问用户 A 是否要授权简书访问自己的头像和昵称
  3. 用户 A 对微博说:我给简书一个临时的钥匙,如果他给你出示了这把钥匙,你就把我的资料给他
  4. 简书使用户给它的钥匙获取用户头像和昵称信息。

以上是 OAuth 认证的大概流程。在使用微博授权之前,简书需要先在微博开放平台上注册应用,填写自己的名称、logo、用途等信息,微博开放平台颁发给简书一个应用 ID 和叫 APP Secret 的密钥,在实际对接中,会使用到这两个参数。

详细流程

接下来分步详细解释上图中每步都做了什么:

      1、用户点击简书上的微博登录按钮,跳转到微博授权页面。微博登录按钮的链接形如下方的 URL:

  https://api.weibo.com/oauth2/authorize?client_id=123050457758183&redirect_uri=http://jianshu.com/callback

URL 中要包含以下参数:

* client_id:在微博开放平台申请的应用 ID

* redirect_uri:授权成功后要跳转到的地址

点击以上链接后跳转到微博的授权页面如下图:

这个页面会告诉用户第三方应用要获取用户的哪些数据,以及拥有什么权限,比如在上图中简书会要求获得个人信息、好友关系、分享内容到微博以及获得评论的权限,用户点击“允许”则表示允许简书获得这些数据,进行下一步

以上只是以新浪微博为例,概括了一种最常见的 OAuth2.0 认证方式,关于 OAuth 更全面的文档,请参见 RFC 6749。阮一峰博客上也写过一篇关于 OAuth 的科普,推荐阅读:《理解OAuth 2.0》

通过以上的方式,在简书和新浪微博中间建立了一个独立的权限层,这个权限由用户赋予,可以被用户随时取消,不同第三方应用之间相互独立,互不干扰,这样就彻底解决了明文存放账号密码的问题。

      2、页面自动跳转到初始参数中redirect_uri 定义的那个URL,并自动在 URL 末尾添加一个 code 参数,实际跳转的地址形如:

 http://jianshu.com/callback?code=2559200ecd7ea433f067a2cf67d6ce6c

 

    3、第三步,简书通过上一步获取的 code 参数换取 Token,Token 就是前文中说到的钥匙。简书请求如下的接口获取 Token:

POST https://api.weibo.com/oauth2/access_token

要包含以下参数:

client_id:在微博开放平台申请的应用 ID

client_secret:在微博开放平台申请时提供的APP Secret

grant_type:需要填写authorization_code

code:上一步获得的 code

redirect_uri:回调地址,需要与注册应用里的回调地址以及第一步的 redirect_uri 参数一致

    4、通过第三步的请求,接口返回 Token 和相关数据:

{
 "access_token": "ACCESS_TOKEN",//Token 的值
 "expires_in": 1234,//过期时间
 "uid":"12341234"//当前授权用户的UID。
}

 

    5、在第四步中获取了access_token ,使用它,就可以去获取用户的资源了,要获取用户昵称和头像,请求如下接口:

GET https://api.weibo.com/2/users/show.json

携带参数:

access_token:上一步获取的access_token

uid:用户的账号 id,上一步的接口有返回

   6、最后一步,微博返回用户信息,简书进行处理,整个流程结束。

原文链接:https://www.jianshu.com/p/0db71eb445c8

 

个人才疏学浅、信手涂鸦,感兴趣的朋友请移步至个人公众号,谢谢支持😜😜......

公众号:wenyixicodedog

【OAuth2】OAuth2概述及使用GitHub登录第三方网站 OAuth 是一个开放的非常重要的认证标准/协议,允许用户授权第三方应用访问其存储在其他网站上资源,而无需将用户名密码提供给第三方网站的开放标准/协议。OAuth2 是 OAuth 的最新版本,同时也是被广泛应用的一个版本。我们在网站上常见的QQ登录,微信扫码登录,GitHub 授权登录就是基于 OAuth2.0 实现的。点击跳转。 阅读详情

相关推荐

Spring Security Oauth2 认证流程

spring security oauth2 登录源码分析一、org.springframework.security.web.authentication.www.BasicAuthenticationFilter的功能二、org.springframework.security.oauth2.provider.endpoint.TokenEndpoint1、org.springframework.security.oauth2.provider.endpoint.TokenEndpoint 转换成tok

山巅 6136

【OAuth2】详细讲解

Oauth2的基本概念与四种认证模式的详细讲解 ​​​​​​​

Huang_Ds的博客 2万+

SpringBoot OAuth2.0认证管理流程详解

OAuth2.0是一个开放的授权协议,可以用来实现第三方应用对我们API的访问控制,OAuth2.0中定义的角色包括: 1) Resource Owner(资源拥有者) 2) Client (第三方接入平台,请求者) 3) Resource Server (服务器资源: 数据中心) 4) Authorization Server (认证服务器) 授权认证的基本流程包括: 首先Client需要向Resource Ow......

u012477420的博客 1万+

OAuth2 详细介绍!

OAuth2 , Spring Security OAuth2 , JWT

weixin_52834606的博客 1万+

SpringBoot 基于 OAuth2 统一身份认证流程详解

了解OAUTH2统一认证基本概念, 各种角色与协议流程, 了解OAUTH2支持的四种模式, 以及各种模式的不同应用场景。了解整体服务设计, 完成认证服务的搭建配置, 通过postman对功能进行验证, 实现TOKEN的申请与刷新功能。完成用户服务的配置的改进以及 Spring Security的集成, 核心类的处理实现;在整个项目中, 存在公用的地方, 要做统一处理, 比如统一异常和统一接口数据返回, 复用方便, 直观清晰, 便于维护与扩展。

专注基础架构领域 1万+

告别混乱!在Unity中为Best MQTT v3设计清晰的服务层:配置、连接、订阅发布模块拆分指南

本文详细介绍了如何在Unity中使用Best MQTT v3插件构建清晰的服务层架构,包括配置管理、连接服务、订阅管理和发布服务的模块化拆分。通过解耦设计、事件驱动和接口抽象,提升代码可维护性和可测试性,适用于物联网和实时通信开发场景。

weixin_30576827的博客 359

【Spring Security OAuth2】- spring security - 认证流程源码级详解

作者简介:大家好,我是哥,前中兴通讯、美团架构师,现某互联网公司联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!

smart_an的专栏 1199

【汽车故障诊断2】从标准到实战:解码DTC格式背后的诊断逻辑

本文深入解析汽车诊断故障码(DTC)的格式与逻辑,对比了OBD-II标准(如ISO 15031-6)的5字符格式与UDS协议(ISO 14229-1)下更丰富的3字节格式。文章从国际标准出发,结合实战案例,阐述了DTC如何作为汽车电子系统的“体检报告”,帮助工程师和维修技师精准定位故障,并详细解读了UDS 19服务如何读取和管理DTC状态。

berry的博客 713

OAuth2授权流程深度剖析:pig系统认证机制详解

在分布式系统架构中,认证与授权是保障系统安全的第一道防线。你是否曾面临以下痛点: - 多系统间用户状态难以同步 - 第三方应用接入存在安全隐患 - 传统Session认证无法满足微服务架构需求 - 认证流程与业务逻辑耦合度高 pig系统基于Spring Cloud 2022、Spring Boot 3.1和OAuth2构建的RBAC权限管理系统,通过精妙的认证机制设计,完美解决了上述问题。本文将...

gitblog_00882的博客 954

别再花屏了!手把手教你用STM32CubeIDE搞定LVGL 8.3移植(附完整源码)

本文详细介绍了如何在STM32CubeIDE环境下成功移植LVGL 8.3,解决常见的花屏问题。从环境配置、显示驱动优化到编译警告处理,提供完整的实战方案和源码示例,帮助开发者快速实现流畅的嵌入式GUI界面。特别针对STM32平台的DMA2D加速和内存管理进行了深度优化。

weixin_33739646的博客 243

【Codesys】获取从站信息,判断是否从站断联,总线丢失

获取EtherCAT从站信息,判断是否从站断联,总线丢失

qq_35316470的博客 5733

OAuth 2.0授权码流程详解:从认证授权区别到GitHub登录实战

在构建现代Web应用时,安全地实现第三方登录和资源访问是核心需求。OAuth 2.0作为行业标准的授权框架,通过分离认证与授权,解决了第三方应用无需获取用户密码即可访问其资源的安全难题。其核心原理是定义资源所有者、客户端、授权服务器和资源服务器四类角色,通过授权码等流程实现安全的权限委托。从技术价值看,它不仅遵循最小权限原则,还通过state参数、客户端认证等机制有效防御CSRF、令牌泄露等常见攻击。在应用场景上,授权码流程特别适用于有后端服务器的Web应用,如集成GitHub、微信等平台登录。本文将以Gi

weixin_29292431的博客 246

强化学习新手上路:用PPO-Clip轻松玩转Pendulum-v1(PyTorch保姆级教程)

本文提供了一份基于PyTorch的PPO-Clip算法实战教程,指导强化学习新手在Pendulum-v1环境中构建连续控制智能体。教程详细解析了PPO-Clip的核心机制,特别是其Clip机制如何限制策略更新幅度以确保训练稳定,并涵盖了从环境配置、策略网络设计、经验收集到完整训练框架搭建的全过程,是掌握连续动作空间强化学习的实用指南。

weixin_29062963的博客 271

【Spring Security OAuth2笔记系列】- spring security - 认证流程源码级详解

认证流程源码级详解 之前的课程都是实现spring给出的扩展钩子。比如:自定义登录页,自定义登录成功处理等; 但是是很碎片化的,在脑海中链接不起来,只知道该这样做; 本章节讲述源码。 认证处理流程说明 认证结果如何在多个请求之间共享 获取认证用户信息 认证处理流程说明 跟着这个流程和之前配置的地方,去一步一步的看源码;这个很重要!! AuthenticationMana...

代码有毒的博客 1706

LAMMPS实战指南 - 从in文件到分子动力学模拟的完整流程解析

本文详细解析了LAMMPS分子动力学模拟的完整流程,从理解in文件的核心作用与基础结构开始,逐步指导如何创建模拟体系、选择势函数、进行能量最小化与初始化,并深入讲解了NVT/NPT系综弛豫与生产模拟的关键步骤。文章还提供了常见问题的避坑指南与实战技巧,帮助初学者快速掌握从编写in文件到成功运行模拟的全过程。

weixin_28365523的博客 396

数字IC行业笔试面试全攻略

数字IC行业迎来快速发展,国产替代加速,技术创新活跃,应用领域持续扩展,但人才缺口扩大。职业发展路径清晰,从初级到首席工程师/架构师的技术路线,或转向管理岗位。薪资待遇优厚,应届生起薪25-35W,5-10年经验可达70-110W,架构师年薪超百万。薪资受公司平台、技术方向、学历背景、项目经验和地域因素影响。AI芯片、汽车电子等热门方向溢价明显,成功流片经验尤其重要。

2301_79143213的博客 759

影刀RPA OAuth2.0认证流程实现:授权码模式与客户端模式详解

本文详细介绍了影刀RPA中实现OAuth2.0认证的两种主要模式:客户端模式和授权码模式。客户端模式通过Client ID和Secret直接获取token,适用于服务器间通信;授权码模式需要用户授权,通过code换取token,适用于第三方登录场景。文章提供了完整的Python代码实现,包括token自动刷新机制,并总结了常见问题如Content-Type设置、redirect_uri匹配等注意事项。最后建议生产环境使用token自动管理,避免流程中断,同时强调了token安全存储的重要性。

聪明的你,肯定能在地球上另一个位置找到我!RPA自动化流程机器人定制,代做,问题咨询! 209

YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2023 FasterNet 高效快速的部分卷积块

本文记录的是基于FasterNet的YOLOv11轻量化改进方法研究。FasterNet的网络结构借鉴 CNN 的设计理念,通过提出的PConv减少推理时的计算和内存成本,同时减少通道数并增加部分比例,降低延迟,并通过后续的PWConv来弥补特征信息可能缺失的问题,提高了准确性。本文在替换骨干网络中配置了原论文中的和六种模型,以满足不同的需求。

Limiiiing的博客 2033

CAS移动端认证适配终极指南:响应式设计与OAuth2.0授权流程详解

🚀 在移动互联网时代,企业应用需要为移动设备提供无缝的认证体验。CAS(Central Authentication Service)作为企业级单点登录解决方案,通过响应式设计和OAuth2.0集成,为移动端用户带来流畅的认证流程。 ## 为什么移动端认证适配如此重要? 随着智能手机和平板电脑的普及,用户期望在任何设备上都能获得一致的登录体验。移动端认证适配不仅提升了用户体验,还增强了系统的

gitblog_00085的博客 494

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Spring Cloud OAuth2 简介及使用

1. 微服务架构下统一认证思路 基于Session的认证方式 在分布式的环境下,基于session的认证会出现一个问题,每个应用服务都需要在session中存储用 户身份信息,通过负载均衡将本地的请求分配到另一个应用服务需要将session信息带过去,否则 会重新认证。我们可以使用Session共享、Session黏贴等方案。 Session方案也有缺点,比如基于cookie,移动端不能有效使用等 基于token的认证方式 基于token的认证方式,服务端不用存储认证数据,易维护扩展性强, 客户端可

rzpy_qifengxiaoyue的博客 7391

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

攻克PyDrive认证难题:OAuth2.0全流程解析与实战指南

你是否还在为PyDrive的OAuth认证流程感到困惑?配置文件出错、令牌刷新失败、服务端集成困难?本文将系统拆解PyDrive的OAuth2.0认证机制,从基础配置到高级定制,通过3种认证模式、5个实战案例和7个避坑指南,让你彻底掌握Google Drive API的身份验证技术。 读完本文你将获得: - 从零搭建PyDrive认证环境的完整步骤 - LocalWebserverAuth与Co...

gitblog_00520的博客 449

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

FastAPI 安全入门:基于 OAuth2 密码流程与 OAuth2PasswordBearer 的 Bearer Token 认证

本文是 FastAPI 官方安全教程“Security – First Steps”的展开版,面向前后端分离或移动端应用的典型场景:前端在另一个域名/路径上运行,需要通过**用户名与密码**向后端 API 完成认证。文章以仓库中的[官方教程原文](https://link.gitcode.com/i/dee85122628de1aaf0b0f6be402e7701)为骨架,逐行剖析配套示例 [tu

gitblog_00838的博客 925

FastAPI 安全入门:用 OAuth2 `password` 流与 `OAuth2PasswordBearer` 搭建认证雏形

基于 FastAPI 官方教程「Security - First Steps」(英文原文见 [docs/en/docs/tutorial/security/first-steps.md](https://link.gitcode.com/i/5df78d3fd8ced6450235613d4e9489b3),本文所依据的印地语版本见 [docs/hi/docs/tutorial/security/

gitblog_00063的博客 425

Aqueduct OAuth2认证教程:构建安全的API授权系统

Aqueduct是一个功能强大的Dart HTTP服务器框架,专为构建REST API而设计。其中,OAuth2认证系统是其核心功能之一,提供了安全的API授权机制,保护你的API资源不被未授权访问。 OAuth2是目前最流行的授权框架之一,它允许第三方应用在不获取用户密码的情况下,安全地访问用户资源。Aqueduct内置了完整的OAuth2实现,让开发者能够轻松地为自己的API添加认证和授权功

gitblog_00865的博客 1071

Context7 MCP 远程连接如何改用 OAuth 认证?

如果你的 MCP 客户端目前通过远程 HTTP 连接 Context7(服务端地址 `https://mcp.context7.com/mcp`),并用 `Authorization: Bearer YOUR_API_KEY` 请求头传递 API key,想把认证方式换成 OAuth 2.0,只需要做两件事:把客户端配置里的服务端地址从 `/mcp` 改为 `/mcp/oauth`,然后在客户端里

gitblog_00011的博客 498

Spring Security:三、OAuth 2.0 自定义认证(新)

https://blog.youkuaiyun.com/weixin_42271016/article/details/104212326 https://blog.youkuaiyun.com/Little_fxc/article/details/92791883 https://blog.youkuaiyun.com/u013911102 https://blog.youkuaiyun.com/zlt2000/article/details/108357216 一些类的说明:Spring Security Oauth2 之 核心架构配置.

好幸运 1160
上一篇: 《Java并发编程的艺术PDF》下载
下一篇: Oauth2 向客户端授权的四种模式
wenyixicodedog
博客等级 码龄8年 87粉丝 116原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值