引用网上图片来说明一下
理解这个OAuth2的关键是要记住,code是前端持有的,access_token是后端持有的,code是用来一次性换access_token的,access_token才是后续请求资源的认证信息
第一种情况:
如果在第4步生成的不是code,而是access_token,然后在第5步重定向的时候返回给小兔软件,那么就会把access_token暴露在浏览器上,容易被黑客拦截,不安全。
第二种情况:
如果在第4步生成的不是code,而是access_token,然后通过服务端接口把access_token返回给小兔软件,那么后续小兔软件是可以与授权服务进行正常通信的,但是这里我和网上有不一样的见解,网上认为这样无法重定向到小兔软件,我认为是可以的,可以在授权的时候,小兔软件就给授权服务发送两个地址,一个是接收access_token的地址,一个是重定向的地址,这样既能接收code,也能完成重定向。但是有个注意点,前端把code传给后端,后端去换取access_token,那么后端是知道当前用户对应的access_token的,如果用我这种方式,是无法建立对应关系的,所以这里接收access_token的时候必须包含一个唯一信息,比如
https://www.baidu.com?access_token=xxx&uid=xxx
这里的uid是类似于用户id的信息,可以让小兔后端把access_token和用户绑定起来。那么下次前端请求的时候后端直接取出access_token即可
这个设计的好处在于可以减少一次与授权服务的交互。这是我个人想出来的方法,大家对此有想法的可以一起交流交流
标签:为什么,oauth2,重定向,access,token,code,授权,小兔 From: https://www.cnblogs.com/leecoder5/p/18420851