OAuth2.0和SSO的理解
OAuth 2.0
客户端需要访问第三方资源
授权码模式
获取授权码,获取访问令牌
用户访问客户端,通过第三方登录,首先跳转到第三方授权页面,待用户授权成功后跳转到客户端(携带授权码),然后客户端携带授权码请求第三方授权服务器获取令牌,然后通过访问令牌向第三方资源请求资源。
大概是下图流程:

以GitHub举例,网站使用github作为第三方登录时,需要注册一个OAuth应用,提供应用名、主页、应用描述、回调地址,注册成功之后会有一个客户端id和客户端密钥,之后凭借id、密钥和授权码拿到token,然后凭借token拿到用户信息。
有些应用会额外返回一个refresh_token刷新令牌,此时刷新令牌相当于第三方应用的长效凭证,访问令牌相当于用户登录态,通过刷新令牌调用刷新接口时会返回新的访问访问令牌以及可能的新的刷新令牌,刷新令牌过期就需要用户重新授权。
简单模式
省略了授权码获取,直接向授权服务器请求令牌
密码模式
将用户在第三方的账号密码提供给客户端,客户端凭借账号密码向授权服务器请求令牌
客户端模式
客户端直接请求授权服务器获取令牌,不需要用户授权
SSO 单点登录
一处登录,多处同时登录
sso可以用oauth2实现,也可以用其他方式实现
实现关键是将登录状态集中存储,比如可以用redis存登录状态,多个应用共用redis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!