授权码模式(Authorization Code)是 OAuth 功能最齐全、流程最严谨,也是最常用的授权模式。
假设我们要用微信账号登录网易云音乐,需要以下五步:
在用户将微信信息授权给网易云音乐登录后,此时后端开始处理,前端不再参与。此时需要微信的服务器将 token 传给网易云音乐的后端,后端携带 token 去访问被授权的微信信息。在授权成功后,需要重定向 URL 通知用户授权成功,也就是说,建立起微信前端和网易云音乐前端的关联。
code 的作用在于让 token 不经过用户的浏览器直接传递,保护了 token 的安全。因为 code 只能用一次,且有时间限制,超时会失效,所以即使被截也未必能用。
其次,要获得 token,除了需要 code,还需要 client id/client secret。所以即使 code 被盗,也是无法获得 token 的。
综上,code 可以保证 token 的安全性,降低被盗取风险。