authorization如何获取_如何跟CXK讲解OAuth2.0

OAuth2.0是一种授权框架,确保第三方应用安全访问用户资源。流程包括:用户通过授权服务器给予同意,回调后获取访问令牌,然后使用令牌访问数据。主要涉及资源拥有者、客户端、授权服务和资源服务四个角色。面试中了解相关术语和流程至关重要。
摘要由CSDN通过智能技术生成

b0ee40cea23041bd61241f6a840680e3.png

如何理解OAuth2.0

OAuth2.0的产生主要是为了安全

简单理解:

启动流程

我们现在要通过QQ登录一个网站,但不希望告知QQ用户名以及密码,同意给予部分信息(头像,性别等)

627a432978c1f5defa01ca58adbf032a.png
https://graph.qq.com/oauth2.0/show?which=Login&display=pc&client_id=1688888&redirect_uri=https%3A%2F%2Fcas.bugly.qq.com%2Fdcf%2FloginBack%3Ftype%3D9%26sn%3D50532928-5fc3-4896-b48d-4d81ccef1358&response_type=code&state=5fe604e4cb30646c3a2f45258a659e22&scope=get_user_info,add_topic,add_one_blog,add_album,upload_pic,list_album,add_share,check_page_fans,add_t,add_pic_t,del_t,get_repost_list,get_info,get_other_info,get_fanslist,get_idollist,add_idol,del_ido,get_tenpay_addr

当点击使用QQ登录的按钮时候,我们重定向到QQ OAuth Server 提供的登录页面,我们可以看到,上面包含 - client_id=101487884 从OAuth Server获得 通常是跟服务端注册时候获得 - redirect_uri=https%3A%2F%http://2Fcas.bugly.qq.com 你重定向的位置 - scope=巴拉巴拉 都是你同意他访问的范围以及权限级别等

打开 QQ (OAuth Client) ,QQ 要求你给予对应授权

db9976f33a922ca2eecc5ea076e38eeb.png

给与同意

QQ (OAuth Client)根据上一步获得的授权,像后台认证服务器申请令牌(asscess key)

回调

如果用户成功登录并授权,则会跳转到指定的回调地址,并给与授权代码(Authorization Code)

获取访问令牌(ak)

通过Authorization Code获取Access Token(匹配密文,常规校验游览器头,重定向,客户端app sk等 如果两个密文匹配会给予asscess key)

https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=[YOUR_APP_ID]&,client_secret=[YOUR_APP_Key]&code=[The_AUTHORIZATION_CODE]&redirect_uri=[YOUR_REDIRECT_URI]

可以看到,QQ 是通过 Access Token,client_id,client_secret,redirect_uri 计算hash发放AK

数据访问

收到的访问令牌用于获取应用程序所需的数据,例子中的QQ就可以访问昵称,性别,头像等 - 客户端使用令牌,向资源服务器申请获取资源(也就是常规通过ak 获取token) - 资源服务确认无误后,同意发放资源 (根据token,后台返回数据)

术语 (面试的时候交流的)

资源拥有者: 用户期望只通过一个应用完成登录,同时不愿意完全公开自己全部信息

Client: 一个应用如(QQ ,facebook,微信)

授权服务(Authorization server):服务器在成功验证资源所有者并获得授权后向客户端发出Access Key。

资源服务(Resource server):托管受保护资源的服务器,能够使用访问令牌接受和响应受保护资源请求。

Redirect Uri: 在给出权限时用户被重定向到的位置 Access Key: 用应用程序请求的访问级别。

授权服务器可以基于授权服务器策略或资源所有者的指令完全或部分地忽略客户端请求的范围

抽象来说如图所示

44443485f84db430f2724e43c0e04b83.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值