面试官:请你完整讲一下如何实现第三方授权登录?要求讲清 OAuth 2.0、授权码模式、Token 机制、JWT。
这道题一旦答顺,中高级岗位直接加分!我会用最通俗、最能直接背、面试直接复述的方式,把四个核心知识点全部串起来讲透!
一、先一句话总述(面试开头这样说,直接镇住面试官)
第三方授权登录基于 OAuth 2.0 协议,最安全的方式是使用授权码模式
流程中会用到 Token 完成身份凭证传递
最终我们自己的业务系统会用 JWT 生成无状态登录态,完成用户登录。
二、什么是 OAuth 2.0?(必须讲清楚)
OAuth 2.0 是一个开放的授权协议,用来让第三方应用安全获取用户在其他平台的授权,而不需要用户泄露账号密码。
你可以这样背:
它不是一种技术,是一套授权标准
目的:让 A 平台能安全访问 B 平台的用户信息
核心:授权、安全、隔离
解决问题:用户不用给你账号密码,就能让你登录
四个角色必须记住(面试必问):
- 用户(Resource Owner)
- 第三方平台(微信 / QQ/GitHub 认证服务)
- 客户端(你的前端 / APP)
- 资源服务器(你的后端系统)
三、什么是授权码模式?(最安全、最标准、必须讲流程)
授权码模式(Authorization Code)是 OAuth 2.0 中最安全、最推荐、企业级项目唯一使用的模式。
流程(面试直接复述,满分)
前端跳转到第三方授权页
携带:client_id、redirect_uri、response_type=code、state
用户同意授权
第三方返回 授权码 code
跳回你的地址,code 临时、一次性、短时效
后端拿 code 换 access_token
后端请求第三方接口,带上:code + client_id + client_secret
获取 access_token
代表用户授权的凭证
用 token 获取用户信息(openid / 头像 / 昵称)
完成登录
为什么必须用授权码模式?
token 永远不会暴露给前端
最安全
code 只能用一次
防窃取
client_secret 保存在后端
不泄露
支持 PC、H5、APP、小程序全平台
四、什么是 Token 机制?(必须讲清楚作用)
Token 就是一个 “临时身份凭证”,相当于一张临时通行证。
你要讲三点:
- Token 是后端颁发的字符串
- 用来代替传统的 Session
- 每次请求携带,服务端验证有效性
第三方登录里的 Token 分两种:
access_token
从微信 / QQ 获取,用来拿用户信息
业务 Token
我们自己后端生成,给前端登录用
Token 特点:
无状态
跨域支持
可设置过期
适合分布式系统
五、什么是 JWT?(必须讲结构 + 作用 + 优势)
JWT = JSON Web Token,是目前最流行的 Token 实现方案。
一句话总结:JWT 就是一种可以自包含信息、可加密、可验签、服务端不用存 Session 的 Token 格式。
JWT 三部分结构(面试必问)
Header(头部)
算法 + 类型
Payload(负载)
存放用户 ID、过期时间
Signature(签名)
密钥签名,防篡改
JWT 在第三方登录中的作用
我们通过授权码拿到用户信息
后端生成 JWT
返回给前端
前端每次请求携带 JWT
后端验证 JWT 有效性,识别用户
JWT 优势(面试加分)
无状态,不存 Session
分布式 / 微服务天然支持
跨域稳定
安全、可过期、可加密
六、把四者串起来:完整第三方登录流程(面试满分答案)
我给你一段可以直接背、直接复述的标准答案:
实现第三方授权登录,整体基于OAuth 2.0 协议,采用最安全的授权码模式完成授权流程,最终使用Token 机制维持登录状态,而我们自己的业务登录态则使用JWT实现。
具体流程如下:
用户点击第三方登录,前端跳转到第三方授权页面。
用户授权后,第三方返回一个临时的授权码 code。
后端使用 code 向第三方平台换取access_token。
通过 access_token 获取用户唯一标识(openid)和用户信息。
系统判断用户是否存在:
不存在 → 自动注册
已存在 → 直接登录
后端根据用户信息生成JWT并返回前端。
前端后续请求携带 JWT,后端验证通过后完成鉴权。
整个流程中:
OAuth2.0
提供授权标准
授权码模式
保证安全性
Token
完成授权凭证传递
JWT
实现无状态登录态
七、面试官最爱追问的 5 个问题(必背)
1. 为什么要用授权码模式,不能直接用令牌模式?
因为授权码模式token 不返回前端,更安全;前端只拿到 code,无法伪造请求。
2. code 有什么特点?
一次性、临时、短过期、只能后端兑换、防重放。
3. Token 和 JWT 是什么关系?
Token 是一种机制;JWT 是 Token 的一种实现方案。
4. JWT 存在哪里?
LocalStorage / Cookie / Authorization 请求头。
5. 第三方登录的安全关键点?
client_secret 必须放后端
使用 state 防 CSRF
code 一次性使用
token 必须加密传输
所有请求走 HTTPS