Oauth2.0

前言:

  最近看了编程不良人的Oauth 2.0 视频,想来记录一下,以供后续的学习。

基本定义

OAuth 2.0是一种授权协议,允许用户授权从一个应用程序到另一个应用程序访问数据和api(资源)。尽管OAuth 2.0不是身份验证协议,但通常情况下,用户必须由提供访问权限的应用程序进行身份验证,然后才能授权对资源进行访问。简而言之,使用OAuth 2.0协议,用户试图登录的网站(也称为服务提供者)可以向身份提供者(即SSO服务器)请求用户的授权。身份提供者可以根据需要对用户进行身份验证,甚至可以提示用户授权对服务提供者的访问。然后,服务提供者接收一个访问令牌,该令牌可用于调用api或访问用户的数据或身份信息,以便用户可以登录到网站并执行网站中所需的操作。

基本流程:

这里简略的解释一下,后面在授权码模式会详细的解释

Client:第三方网站

Resource Owner: 用户

Authorization Server: 授权服务器

Resource Server: 资源服务

这里先举个真实的案例,来说明下Oauth 2.0 的应用场景

打开手机游戏模拟帝国,点击【账号登录】,你会发现弹出三个图标。意思就是让我们使用社交账号登录,点击QQ,会跳出下面这个界面,问我是否同意,我同意。

这样我们就可以成功的进入游戏界面了。

实际上这个游戏的登录就是使用了Oauth2.0登录 , 而非传统的账号密码登录。

Oauth 2.0 登录非常的简单,总结下来就是3步,

1. 第三方网站或者应用【模拟帝国游戏App】问用户是不是同意授权使用qq账号登录模拟帝国

2.用户同意后,模拟帝国向授权服务器发送请求,授权服务器核对没问题后,给一个Token 给第三方应用

3.第三方应用拿着Token 访问资源服务器

授权码模式:

前面一个案例只是简单的介绍了Oauth 2.0 的大体流程,实际运用中基于以上的流程衍生出四种模式,分别是授权码模式简化模式密码模式客户端模式。        

这里着重介绍一下最为常用且复杂的授权码模式。

 以上这张图片是授权模式的流程图,

为了直观,生动的展示流程,我用Ruby China 的案例来辅助说明授权码模式的详细流程。

这是Ruby China 官方网站的登录界面,我们可以看到这里支持Github 和 Twitter 授权登录,结合流程图,跟着我的思路走,我们现在正处于左下角Client 位置,点击Github图标按钮

我们执行了A ,我们的用户代理,就是浏览器向授权服务器发送请求。请注意上面的URL,

github.com 是域名

login/oauth/authroize 是接口

?后面都是参数,这非常重要!!!

client_id 就是当初Ruby China 在Github 那里备案注册时,Github 给Ruby China 的一串编号,相当于我们的身份证号

redirect_uri 是重定向地址

response_type 是授权模式,code 就代表授权码模式

scope: 可以访问资源的范围

state: 用处就是防范CSRF 攻击

我们此时可以看到这里有提示用户是否运行授权登录,我们点击了绿色按钮,这时等价于执行B

此时我们可以看到页面开始跳转,这时候C就执行了,因为前面请求的时候提供了URL ,所以时候授权服务器就知道跳转到哪儿了。此时授权码会发送给浏览器,浏览器会发送授权码给Ruby后端服务器 ,当然用户看不到授权码,授权码是有有效期的。后面的流程不通过浏览器执行了,对于用户来说,是不可见的。接下来执行D,Ruby china拿着授权码和重定向地址到授权服务器那里,授权服务器要验证一些信息,比如授权码正不正确,Client_id 是否存在等等,验证无误后,执行E颁发Token 给Ruby China, 后面Ruby China ,就可以拿着Token 去资源服务器那里取到资源了

参考文档:

RFC 6749 - The OAuth 2.0 Authorization Framework

  • 31
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值