0x00 前提
最近在测试公司的 oauth 认证方面的问题,要再去熟悉一下这块,所以把这块写一下。
0x01 OAuth2.0 概念
OAuth是一个关于授权(authorization)的开放网络标准,目前是最常见最通用的一个授权协议。
什么地方是OAuth2.0,其实这个东西非常的常见,
我们的快捷登录其实都是这个,拿这个举例子
那么为什么要用这个呢这个?
其实道理很简单,我们的网站首先使用这个快捷登录肯定是很方便,那么第三方网站和我们网站肯定是不能互相相信对方的,不可能将用户信息交给对方保存,所以一般情况下OAuth允许用户授予此访问权限,而无需将其登录凭据暴露给请求的应用程序。这意味着用户可以选择他们想要共享的数据,而不必将其帐户的账号密码交给第三方。
0x02 流程梳理
为了方便理解,直接用例子展示,首先我们要分清楚各个角色,我们简单分出4个部分:
resource owner(资源拥有者):就是用户
resource server(资源服务器):我们想要快捷登录的的网站 zeo.cool
User Agent:指浏览器。
authorization server(认证服务器):三方授权服务器(例如 Google授权服务器),服务提供商专门用来处理认证授权的服务器,认证成功后向客户端发出访问令牌资源所有者身份验证,获取授权。
client_id : 这个表示网站后台,我们的 zeo.cool的网站后端
在实际中有四种实现方式:
- 授权码模式
- 简化模式
- 密码模式
- 客户端模式
0x03 前提
某一个第三方应用 zeo.cool, 应用先去 Google认证中心进行注册。
提供一个回调地址 https://zeo.cool/oauth_calback
然后会得到:
ClientID = 888888 : 这个是我的网站zeo.cool的一个标识符号
ClientsecretID = 6666666 :这个类似私钥,要好好保存,绝对不能公开
0x04 令牌模式
在OAuth2.0中最常用的当属授权码模式
授权码模式(authorization code)是功能最完整、流程最严密的授权模式。它的特点就是通过客户端的后台服务器,与"服务提供商"的认证服务器进行互动。
注意:说明步骤(A)、(B)和©的线条在通过用户代理时被分成了两部分。在它们通过用户代理时被分成两部分。
(A)用户访问客户端,客户端将用户引导向认证服务器
客户端申请认证的URI,包含以下参数&