oauth2协议
什么是OAUTH2协议:
OAuth2.0是一个开放标准,允许用户授权第三方应用访问他们存储在另外服务提供者上的信息,并且不需要告知第三方他们的用户名和密码。将认证和授权交给第三方担保
首先是几个概念问题:
资源:用户信息,在微信中存储
资源拥有者:用户
认证服务:微信负责认证用户的身份,也负责为客户端颁发令牌
客户端:携带令牌请求微信获取用户信息
授权服务器:负责授权认证担保的服务器,比如微信扫码登录中的微信
第三方服务器:比如微信扫码中需要扫码的网站
总的来说,这一套grant,token的颁发与接收是因为资源拥有者、第三方服务器与授权服务器都可能是不安全的,需要一系列手段来认证
仍以微信简单概述来说授权码模式:
1.用户扫码登录,网站向用户申请授权(A)
2.用户同意授权(B)
3.网站获取授权码(B)
4.网站发送授权码给微信服务器(C)
5.微信服务器为网站提供令牌(D)
6.网站携带token向微信资源服务器要用户信息(E)
7.微信资源服务器返回受保护资源,即我们需要的信息(F)
2024-10-3 新增:
简化模式:(相对于授权码模式,授权服务器对第三方服务器是信任的)
在授权码模式上进行了简化,微信服务器不再向网站提供授权码,而是直接提供token,少了BC两步骤
为什么要有简化模式:有些应用不具备后端,无法向微信服务器发送请求
密码模式:(相对于上述,资源拥有者对第三方服务器是信任的)
这里是资源拥有者直接将用户名密码(比如说直接将微信的账号密码)都提供给第三方,第三方去申请token并返回
资源拥有者对第三方绝对信任的情况下,很少见
客户端模式:(资源拥有者,第三方服务器,授权服务器都是相互信任的)
第三方服务器只给授权服务器(微信服务器)一个标志,授权服务器直接返回令牌
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?