OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容。OAuth在全世界得到广泛应用,目前的版本是 2.0 版。
有一个名为“信用卡管家”(www.a.com)的程序,可以自动从网易云邮箱中读取与信用卡相关的邮件,然后进行分析、汇总后,形成一张报表。
“信用卡管家”如何访问网易云邮箱?
产生的问题?
“信用卡管家”如何访问网易云邮箱?(可见下面整体流程)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BRhXr3tT-1659493899139)(D:\note\笔记仓库\图片\b46018e890c39ede1dc5750e8d880da0.jpeg)]](https://1000bd.com/contentImg/2022/08/09/020425454.png)
网易怎么信任“信用卡管家”?
如何存储这个token?
浏览器保存token
通过hash fragment的方式,请求的时候带上这个token参数 例如:www.a.com/callback#token=<网易返回的token>”
为什么存储在客户端?
疑问?图上第6步token以名文方式传输会存在安全问题,可以通过浏览器的历史记录或者访问日志能够获取。
如何将token进行隐藏?
引入了一个叫做Authorization Code的中间层。 当用户用网易账号登录的时候, 网易认证中心这一次不给”信用卡管家“直接发token,而是发一个授权码(authorization code) ,
信用卡管家服务器端取到这个code以后,在后台再次访问网易认证中心, 这一次网易认证中心才发给”信用卡管家“真正的token 。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CWFA4jw0-1659493899143)(D:\note\笔记仓库\图片\09b035c8f28ca751741a63a6b103f447.jpeg)]](https://1000bd.com/contentImg/2022/08/09/020425653.png)
为何要这样设计?
code也是明文传输,不也存在安全问题码?
本文讲的其实就是就是OAuth 中的三种认证方式,依次是:
还有一种叫做Client credentials ,用的较少,文章没有涉及。
在OAuth中,还有几个术语大家可以理解下:
参考资料:
《码农翻身》