鉴权实现

参考:码农翻身篇章

背景

现在你做了一个“信用卡管家”应用,可以帮助用户整理邮件,前提是需要读取邮件,那么就需要获取用户的账号密码进行登录邮箱,但是用户肯定不会信任你的应用,那么如何让用户信任是个问题。

2.0 迭代

使用 token 进行身份认证

用户不信任你的应用没有关系,但是用户肯定是信任网易邮件的吧,在用户访问信用卡管家时,提示用户是否使用网易邮箱账号登录,用户点击同意之后会跳转到网易邮箱的登录页面以及会询问用户是否同意“信用卡管家”访问你的邮箱,用户使用账号密码授权登录成功之后会返回到信用卡管家。这期间由网易邮箱来判断用户信息是否正确,登录成功后,会返回给你一个 token,信用卡管家带上这个 token 就可以正常访问网易邮箱的 API 了。
这中间还有个点,网易邮箱为什么要相信信用卡管家。这个需要提前向网易邮箱申请认证,会得到app_id、 app_key 和 app_secret, 当重定向到网易邮箱的时候,需要将 app_id信息 带过去,网易邮箱就知道是信用卡管家在申请授权了。

app_id、app_key, app_secret ,token 理解

app_id, app_key, app_secret 就是网易邮箱给信用卡管家开发者账号分配对应的权限,可以理解为应用标识、账号和密码,app_id:应用的唯一标识,app_key公匙(相当于账号),app_secret私匙(相当于密码),token 相当于令牌(过期失效)。

1、向第三方服务器请求授权时,带上AppKey和AppSecret(需存在服务器端)
2、第三方服务器验证AppKey和AppSecret在DB中有无记录
3、如果有,生成一串唯一的字符串(token令牌),返回给服务器,服务器再返回给客户端
4、客户端下次请求敏感数据时带上令牌

上面的用户登录过程图解如下:

在这里插入图片描述
这样的话,用户不用担心将账号密码暴露给信用卡管家了,信用卡管家只需要根据 token 就可以正常请求网易邮箱的 API 了。上面可以看出获取 token 是最终目的了,所以说 token 很重要,要好好保存,仔细观察发现获取 token 完全是前端完成的,没有后端什么事,以及注意到 第 6 步中,产生的 token 是已明文的方式返回给浏览器的,这是不是有些不太安全呢?

3.0 迭代

后端根据授权码获取 token

引入中间层 Authorization Code ,在网易邮箱认证后不直接下发 token ,而是下发一个授权码,信用卡管家根据这个授权码,再次请求网易进行认证获取 token。

实现流程如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值