oauth2.0 授权码模式的一些思考

文章讨论了OAuth2.0授权码模式中为何需要授权码code以确保安全,以及access_token失效后使用refresh_token的原因,主要是为了避免频繁的用户授权。同时,对于没有服务器的移动端应用,提出了一种利用散列算法增强安全性的解决方案,防止app_secret泄露。
摘要由CSDN通过智能技术生成

oauth2.0 授权码模式问题

1、oauth2.0 协议 授权码模式中,为什么需要引入授权码code?

如果没有code,在用户授权完成后,授权服务携带access_token调用三方服务的后端接口,将access_token 交给第三方服务的后端,不能通过重定向的方式进行(access_token 不能暴露在浏览器中,避免泄漏)。
这样的话,用户点击完授权后,不能跳转回第三方软件,一直在授权页面 体验不好,当然 第三方服务拿到token后,可以自己重定向回自己的页面。
相对来说比较麻烦。

2、为什么access_token失效后,要使用refesh_token获取access_token,而不是直接获取access_token?

因为access_token的获取需要code + 用户的授权操作,每一次获取都需要一次授权 影响用户体验。

3、没有server的移动端如何使用授权码模式

传统的授权码模式,第三方应用服务端通过code获取到access_token,但是有的移动端应用并没有服务端,如果把app_secret保存到客户端,一旦泄漏,问题很大,因此为了解决这个问题,引入了以下这种方案:

首先,客户端使用一个散列算法生成根据一个随机数生成另一个数,然后在获取code的时候,将生成的数字和散列算法都发到授权服务,因为散列是不可逆的,即使被拦截,也无法推出原来的数字是什么,授权服务保存数字和散列算法,这样待下次通过code换取token的时候,将原来的数字发过去,服务端通过散列算法进行校验,判断是否一致。

如果获取code的过程中,算法和数字被拦截,然后被替换,那么真实的客户端,再次获取token会获取失败,token不会泄漏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值