微信授权登录是oauth2的典型应用,且大多用户使用的是oauth2的最严格模式:授权码模式。
网上大量的微信授权登录流程图,但没有找到完全对的。当然我相信可能作者是理解正确,但是作图没有注意区分,导致容易误导新手,甚至会带来安全隐患。
先举例两个比较常见的错误:
1 “第三方平台”(业务方)没有区分第三方的前端和第三方后台。
比如下图的步骤6。让开发者认为校验code的操作在第三方的前端进行,实际上这是危险行为,容易导致secret暴露了,校验code需要在第三方后台。
2 没有区分第三方客户端和微信客户端。
比如这里的步骤5,实际是在微信app内的微信域名下,完成同意授权.
3 一个较准确的图。
注意区分第三方的前端和后台,以及微信app的前端和后台。
1 code转token,一定要在后台进行,以确保secret的安全。
2 state参数最好校验,否则会发生csrf漏洞,尤其对于绑定类的操作。