面试题答案
一键面试授权码模式(Authorization Code Grant)
- 适用场景:适用于有后端服务器的Web应用程序。例如,一个大型的电商网站,用户在第三方登录时,电商网站后端服务器可以通过授权码获取访问令牌。
- 原因:
- 安全性高:这种模式下,授权码在后端服务器间交换,不会暴露在前端,减少了令牌泄露风险。比如,用户登录时,授权码通过HTTPS从授权服务器发送到应用后端,而不是在浏览器端传递。
- 可刷新令牌:支持刷新令牌机制,当访问令牌过期时,应用后端可以使用刷新令牌获取新的访问令牌,无需用户重新授权。如电商应用在用户长时间未操作后,仍可通过刷新令牌保持用户登录状态。
隐式授权模式(Implicit Grant)
- 适用场景:适用于纯前端应用,如单页应用(SPA)。例如,基于JavaScript的小型游戏应用,通过第三方登录后可直接在前端获取令牌。
- 原因:
- 简单快速:无需后端参与,直接在前端通过重定向获取令牌,适合没有后端或后端功能简单的应用。例如游戏应用,用户登录后直接在浏览器中获取令牌,可立即调用第三方接口。
- 前端友好:流程简单,前端开发者易于实现。像基于HTML5的轻量级应用,无需复杂后端配置即可实现第三方登录。但安全性相对较低,因为令牌直接暴露在前端,可能被窃取。