OAuth2.0的简单认识
内容:结合实际平台应用,以开发者视角简单描述OAuth2.0
OAuth2.0其实是一种授权机制,而且在日常的互联网环境中是非常常见的,比如一些网站或者应用,在我们选择登录时,常常会有第三方登录选项,其实这就是OAuth2.0的一种实现。
官方协议流程
这里直接引用官网文档流程
授权码模式
其实OAuth2.0有四种模式,但授权码模式(authorization code)是功能最完整、流程最严密的授权模式,所以笔者只对该模式进行展开,其他模式类比即可 单纯懒。
授权码模式官方的流程如下图
对于流程细节和其他三种模式感兴趣的可以直接去理解OAuth 2.0 - 阮一峰的网络日志。
实例
这里我们直接以京东平台为例,看一下以开发者视角如何对接平台的OAuth2.0授权 这里夸一下京东的文档。
1)获取code
获取code
,其实就对应上面流程图中红色框选的步骤,这一步的主要目的是告诉授权服务器,该用户已经同意用京东账号登录其他的应用了。
那么京东平台对于这一操作的实现方式是:让开发者拼接授权url,即
https://open-oauth.jd.com/oauth2/to_login?app_key=XXXXX&response_type=code&redirect_uri=XXXXX&state=20180416&scope=snsapi_base
其中,redirect_url
为请求回调地址,当用户完成授权后,京东通过该地址请求回调返回code
,即流程图中绿色框选的部分。
2)获取access_token
通过上一步我们已经获取到了code
,接下来就是用以此换取access_token
,即流程图中黄色框选部分。
京东平台是通过拼接获取url的方式来换取code
的,即
https://open-oauth.jd.com/oauth2/access_token?app_key=XXXXX&app_secret=XXXXX&grant_type=authorization_code&code=XXXXX
通过请求该地址,即可获取access_token
,即蓝色框选部分。
3)刷新access_token
第二步获取access_token
时,refresh_token
也会同时返回。
因为一般情况下,令牌是短期的,到期会自动失效,所以就需要有refresh_token
参数来刷新令牌。
京东平台依旧是通过拼接url的方式来刷新access_token
,即
https://open-oauth.jd.com/oauth2/refresh_token?app_key=XXXXX&app_secret=XXXXX&grant_type=refresh_token&refresh_token=XXXXX
通过请求该地址,即可刷新access_token
,同时获取到新的refresh_token
。
总结
OAuth2.0其实简而言之,就是让通过用户本人授权,让一个拥有足够信用的应用使用该用户的一些信息。
虽然,通过用户直接输入密码也可以达到同样的效果,但使用这一模式有几个很大的优势
(1)令牌为短期有效
(2)令牌可以设置权限范围通过传递不同的参数获取不同的权限范围,上文并没有细说
(3)令牌相比于密码更加可控,即数据所有者可立即撤销令牌
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2023-06-19 .NET Core(C#)使用Titanium.Web.Proxy实现Http(s)代理服务器监控HTTP请求