微信登录和基于授权码模式的单点登录,四个角色分别是什么?
📌 微信登录和基于授权码模式的单点登录,四个角色分别是什么?
OAuth2 无论应用于微信登录还是企业级 SSO 单点登录,都存在四个核心角色:
- Resource Owner(资源拥有者)
- Client(客户端)
- Authorization Server(授权服务器)
- Resource Server(资源服务器)
1️⃣ 问题背景
很多面试官在问 OAuth2 时,并不是想听授权码模式的流程,而是想考察候选人是否真正理解 OAuth2 的角色划分。
最常见的问题有:
- 微信登录中的四个角色是谁?
- 企业 SSO 单点登录中的四个角色是谁?
- 微信为什么既是授权服务器又是资源服务器?
- Client 指的是用户还是系统?
- 授权的到底是什么资源?
很多开发者能够背出授权码模式流程,但一旦问到角色对应关系就容易混淆。
2️⃣ 核心原理
OAuth2 四个角色
↓
Client(客户端)
↓
Authorization Server(授权服务器)
↓
Resource Server(资源服务器)
| 角色 | 职责 |
|---|---|
| Resource Owner | 拥有资源的用户 |
| Client | 想访问用户资源的第三方系统 |
| Authorization Server | 负责认证用户并签发 Token |
| Resource Server | 存放用户资源并验证 Token |
Client 永远不是用户。
Client 指的是第三方应用系统。
3️⃣ 数据结构分析
微信登录中的角色映射
| OAuth2角色 | 微信登录中的对应对象 |
|---|---|
| Resource Owner | 用户 |
| Client | 商城系统、博客系统等第三方网站 |
| Authorization Server | 微信开放平台 |
| Resource Server | 微信用户信息接口 |
SSO 单点登录中的角色映射
| OAuth2角色 | SSO场景中的对应对象 |
|---|---|
| Resource Owner | 企业员工 |
| Client | OA、CRM、ERP 等业务系统 |
| Authorization Server | 统一认证中心 |
| Resource Server | OA、CRM、ERP中的业务数据 |
4️⃣ 算法分析
微信登录授权逻辑
微信登录的本质是用户授权第三方网站获取自己在微信中的部分资源。
例如:
- 昵称
- 头像
- OpenID
- UnionID
- 邮箱信息
用户授权的不是密码,而是资源访问权限。
允许商城系统访问我的微信信息。
不是:
允许微信访问我的信息。
SSO 授权逻辑
SSO 的核心思想是一次登录,到处访问。
统一认证中心负责认证用户身份,业务系统只负责消费 Token。
用户第一次登录之后,访问其他系统时无需再次输入密码。
5️⃣ 执行流程
微信登录流程
↓
访问商城系统
↓
点击微信登录
↓
跳转微信授权页
↓
用户同意授权
↓
微信返回 Authorization Code
↓
商城系统
↓
Code 换取 AccessToken
↓
微信返回 Token
↓
获取用户信息
↓
登录成功
微信登录四个角色
↓
Resource Owner
商城系统
↓
Client
微信开放平台
↓
Authorization Server
微信用户信息接口
↓
Resource Server
SSO 登录流程
↓
访问 OA 系统
↓
发现未登录
↓
跳转认证中心
↓
输入账号密码
↓
认证成功
↓
返回 Authorization Code
↓
OA系统换取 Token
↓
登录成功
SSO 四个角色
↓
Resource Owner
OA / ERP / CRM
↓
Client
统一认证中心
↓
Authorization Server
OA / ERP / CRM业务数据
↓
Resource Server
6️⃣ 实际案例
案例一:微信扫码登录博客系统
假设用户访问博客网站:
点击微信登录之后:
- 用户属于 Resource Owner
- 博客系统属于 Client
- 微信开放平台属于 Authorization Server
- 微信用户信息接口属于 Resource Server
博客系统通过微信获取用户头像和昵称完成注册登录。
案例二:企业统一认证中心
公司内部存在多个系统:
- OA办公系统
- CRM客户系统
- ERP财务系统
所有系统接入统一认证中心。
员工登录 OA 后访问 CRM 不需要再次登录。
认证中心负责发放 Token,各业务系统负责校验 Token 并返回业务数据。
7️⃣ 优缺点分析
| 场景 | 优点 | 缺点 |
|---|---|---|
| 微信登录 | 无需注册,用户体验好 | 依赖第三方平台 |
| SSO登录 | 统一认证,提升管理效率 | 认证中心成为关键节点 |
8️⃣ 面试常见问题
Q1:用户到底授权了什么?
用户授权的是资源访问权限。
例如:
- 头像
- 昵称
- 邮箱
- 手机号
- 好友列表
并没有把密码授权给第三方系统。
Q2:Client 是用户吗?
不是。
Client 指第三方应用,例如商城系统、博客系统、OA系统。
Q3:为什么微信既是授权服务器又是资源服务器?
因为授权服务器和资源服务器是逻辑角色。
微信既负责:
- 登录认证
- Code签发
- Token签发
又负责:
- 用户信息查询
- 资源访问控制
因此同时承担两个角色。
Q4:企业 SSO 中授权服务器和资源服务器一定分开吗?
不一定。
逻辑上分开,物理上可以部署在同一系统,也可以拆分为独立服务。
9️⃣ 总结
微信登录四个角色:
- Resource Owner:用户
- Client:商城系统、博客系统
- Authorization Server:微信开放平台
- Resource Server:微信用户信息服务
SSO 登录四个角色:
- Resource Owner:企业员工
- Client:OA、CRM、ERP
- Authorization Server:统一认证中心
- Resource Server:OA、CRM、ERP业务数据
面试一句话回答:
微信登录场景下,用户是 Resource Owner,第三方网站是 Client,微信开放平台同时承担 Authorization Server 和 Resource Server 两个角色;企业 SSO 场景下,认证中心负责授权,OA/ERP/CRM 既是 Client,又拥有自己的业务资源,因此业务系统中的数据服务属于 Resource Server。
相关文章
-
秒杀系统中如何解决超卖问题(架构级深度解析)
秒杀系统是典型的高并发场景,在短时间内会有大量请求同时访问库存资源,例如抢购手机、票务、限量商品等。 在这种场景下,最核心的问题就是:如何保证库存不会被超卖。
NEW个对象 2026-06-12
-
什么是流量削峰?高并发系统中的核心保护机制详解
在互联网系统中,绝大部分时间系统流量都处于平稳状态,但在某些特殊场景下会突然出现流量激增。例如秒杀活动、双十一购物节、春节红包雨、明星直播带货、热门新闻发布等场景,大量用户会在极短时间内同时访问系统。在互联网系统中,绝大部分时间系统流量都处于平稳状态,但在某些特殊场景下会突然出现流量激增。例如秒杀活动、双十一购物节、春节红包雨、明星直播带货、热门新闻发布等场景,大量用户会在极短时间内同时访问系统。
NEW个对象 2026-06-12
-
减库存成功但生成订单失败该怎么办?
在高并发秒杀系统中,“减库存成功但生成订单失败”是一个典型的分布式一致性问题。该问题通常出现在库存与订单两个独立系统之间的非原子操作场景。
NEW个对象 2026-06-12