首页 > 项目 > 当前页面

微信登录和基于授权码模式的单点登录,四个角色分别是什么?

2026-06-13 NEW个对象

📌 微信登录和基于授权码模式的单点登录,四个角色分别是什么?

面试高频结论:
OAuth2 无论应用于微信登录还是企业级 SSO 单点登录,都存在四个核心角色:
  • Resource Owner(资源拥有者)
  • Client(客户端)
  • Authorization Server(授权服务器)
  • Resource Server(资源服务器)
但不同场景下,这四个角色对应的实际系统并不相同。

1️⃣ 问题背景

很多面试官在问 OAuth2 时,并不是想听授权码模式的流程,而是想考察候选人是否真正理解 OAuth2 的角色划分。

最常见的问题有:

  • 微信登录中的四个角色是谁?
  • 企业 SSO 单点登录中的四个角色是谁?
  • 微信为什么既是授权服务器又是资源服务器?
  • Client 指的是用户还是系统?
  • 授权的到底是什么资源?

很多开发者能够背出授权码模式流程,但一旦问到角色对应关系就容易混淆。

2️⃣ 核心原理

OAuth2 四个角色

Resource Owner(资源拥有者)

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️⃣ 实际案例

案例一:微信扫码登录博客系统

假设用户访问博客网站:

blog.xxx.com

点击微信登录之后:

  • 用户属于 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

NEW个对象 NEW个对象
JAVA是世界上最好的语言