图解前后端分离项目中OAuth授权码(authorization code)模式流程

前端:浏览器中运行的JS代码,后端:node服务 or java服务 or GO服务。

认证服务器即为提供认证服务的服务,比如QQ,某些SSO网站等。

1.为什么认证服务器返回code而不是直接返回token给浏览器?

因为安全。如果认证服务器直接将token返回给浏览器。那么黑客可以通过获取用户浏览器的token访问认证服务器对应资源服务器的资源。这就存在安全隐患。

而浏览器把code提交给应用服务器,应用服务器去换取token时,应用服务器需要提前client_secret,此时黑客没有client_secret无法成功获取token。也就无法直接访问用户在资源服务器的资源。避免发生这种安全隐患发生的可能性。

也就是说,认证服务器是认识应用服务器的。当前你把资料存储在认证服务器对应的资源服务器中,并告诉认证服务器你允许应用服务器或此资源,则资源服务器只允许“应用服务器+你的code”都正常时才会提供你的资源,这样黑客没有应用服务器的密码即使拿到了你的code也无法访问你的资源。

举个例子:

你(浏览器)在银行前台(认证服务器)将一笔黄金(你的数据,资源)存在了银行金库(资源服务器),现在你想把黄金给金铺(应用服务器)打造一个金马桶。此时你不想直接出面将黄金取出并转交给金铺,而是想让金库凭借某个凭证(code or token?)自己去取出黄金。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值