博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OAuth2.0
阅读量:5886 次
发布时间:2019-06-19

本文共 1158 字,大约阅读时间需要 3 分钟。

OAuth,是Open Authorization的简写,叫开放授权。其他概念网上很多,这里直观的说下是怎么个过程。

模拟4个对象,用户、A应用、B应用、服务器(属于A应用公司)。用户使用A应用的账号登陆B应用。

1、B应用里嵌入了A应用的SDK,所以在B应用里点击“使用A应用账号登陆”的时候,就通过openUrl跳到A应用指定的登陆页面去了。在跳到A应用的过程中,B应用把自己的一些应用信息一并带过去了。

2、这个时候已经跳到A客户端了,A得到了B发过来的“B的应用信息”。这个时候A应用先把自己客户端里的用户信息和A的应用信息发给服务器,服务器返回了一个用户信息+A应用信息的access_token,这里我们叫access_token1。

3、(这一步页面上看不到变化,内部过程)A应用拿着access_token1和上一步收到的B的应用信息再发给服务器,得到了一个用户信息+B应用信息的access_token,这里叫access_token2。

4、这个时候,已经有了用户+B应用的access_token2(令牌)。授权完毕后自动跳回B应用,在跳回过程中,access_token2也发给B应用了。B拿着这个access_token2。就可以去申请服务器里的资源。

可能的问题:

1、为什么是access_token2给了B,而不是access_token1?

虽然服务器和A应用是一个公司的,但是服务器对所有应用都是一视同仁,(服务器只认token)谁要访问我的资源,谁就拿着用户信息+自身应用信息的access_token(令牌)来和我要资源。

2、为什么要先要一下access_token1,然后再要access_token2?

资源是在服务器,但这个账号是属于应用A的,如果B应用直接去问服务器的话,服务器又不知道B应用要的是哪个应用的资源。服务器上可是很多其他应用的资源。access_token1的过程就是A应用和服务器打个招呼,一会我会带B应用来申请我A应用的资源。

3、注意点:上面的例子并不是所有情况,也就是有的情况只有一个access_token产生过程。文章主要是举栗解释下access_token是什么东西,access_token一般就有由用户信息+应用信息组成的一个标识码。

4、为什么要用OAuth?

为了不暴露用户账户信息,上面例子中,用应用A登陆了应用B,但是应用B并不知道用户的用户名密码是什么。用户在授权页输入用户名密码或者是跳转到应用的时候,应用B是挂在后面等消息的。

接下来上一点其他地方载来的图:

OAuth 2.0的运行流程如下图,摘自RFC 6749

转载于:https://juejin.im/post/5cd149d4f265da035378f35a

你可能感兴趣的文章
hovercard头像悬浮卡效果
查看>>
mysql5.7.18安装
查看>>
进程间通信(共享内存),五种通信方式简单总结
查看>>
NAT技术和代理服务器
查看>>
xmanager远程连接linux配置
查看>>
Linux下Tomcat启动报Can't connect to X11 window server
查看>>
真正从零开始,TensorFlow详细安装入门图文教程!
查看>>
PHP 中 $_FILES
查看>>
spring IOC
查看>>
linux内核升级
查看>>
Linux下vmstat结果详解
查看>>
USE_HASH
查看>>
Linux Eclipse美化:解决工具栏过大和 Javadoc背景色修改
查看>>
Jeesite中shiro的用法讲解
查看>>
svn钩子
查看>>
RabbitMQ安装、配置、基本使用
查看>>
NFS读写块大小分析
查看>>
javascript预编译和处理的问题
查看>>
云计算之openstack-newton版搭建(二)
查看>>
GCC 源码安装
查看>>