Oauth2.0了解

Oauth2.0
一、名称解释
(1)客户端(Client):应用,如微信小程序,Steam游戏。
(2)资源所有者(Resource Owner):用户,如微信用户,Steam用户。
(3)资源服务端(Resource Server):微信服务端,Steam各业务域服务器。
(4)授权服务端(Authorization Server):如微信授权服务端,Steam开放平台授权服务端。
(5)用户代理(User Agent):用户面向的窗口,客户端表现形式,如微信小程序,Steam游戏的网页、Unity、Android、IOS(都有对应SDK封装调用开放平台授权接口)。
二、工作目标
客户端通过用户代理,在资源所有者面向授权服务器授权后,可以访问资源服务器。简单讲,就是用户授权指定应用后,应用可以访问平台的用户数据。
三、使用场景
(1)各种单点登录,如QQ登录,微信登录。
(2)平台应用,如微信小程序,支付宝小程序,Steam游戏,Steam游戏。
四、四种模式
(1)授权码模式(Authorization Code)

<1>授权(应用客户端请求授权服务端):
传入用户标识uid、应用标识appKey,返回授权码code。
code由uid、appKey、appSecret、过期时间戳生成。
有效期5分钟。
<2>申请访问令牌和刷新令牌(应用服务端请求授权服务端):
传入授权码code、应用标识appKey、应用密钥appSecret,返回访问令牌accessToken、刷新令牌refreshToken、过期时长、用户在应用下的标识openId。
code解析出uid、appKey、appSecret、过期时间戳。
appKey、appSecret校验应用服务端真实性。
过期时间戳校验请求有效性。
accessToken由uid、appKey、appSecret、过期时间戳生成。
有效期2小时。
refreshToken由uid、appKey、appSecret、过期时间戳生成。
有效期30天。
openId由uid和appKey生成。

<3>访问开放平台接口(应用服务端请求授权服务端,校验通过后请求业务域服务端):
传入访问令牌accessToken。
accessToken解析出uid、appKey、appSecret、过期时间戳。
appKey、appSecret校验应用服务端真实性。
过期时间戳可以校验请求有效性。
uid识别用户。
<4>刷新访问令牌(应用服务端请求授权服务端):
传入应用标识appKey、刷新令牌refreshToken,返回访问令牌accessToken、刷新令牌refreshToken、过期时长、用户在应用下的标识openId。
refreshToken解析出uid、appKey、appSecret、过期时间戳。
appKey、appSecret校验应用服务端真实性。
过期时间戳可以校验请求有效性。
重新生成accessToken和refreshToken。
思考1:为什么授权后不直接返回访问令牌?
访问令牌存储在客户端,泄漏风险高。
思考2:为什么授权后不通知客户端授权成功,同时根据配置的接口通知应用服务端访问令牌和刷新令牌?
使授权服务端低延迟,减轻授权服务端压力。
思考3:为什么授权码有效期很短?
减小授权码在客户端的泄漏风险。
思考3:为什么访问令牌有效期短?
减小泄漏后的风险。
思考4:为什么不直接传访问令牌来续期?为什么刷新令牌有效期长?
使用访问令牌续期会造成用户频繁授权,而刷新令牌有效期长,可以避免用户频繁授权。
思考5:为什么刷新时不再次传入密钥,提高应用服务端真实性?
刷新是较为频繁的操作,传入密钥会增加泄漏风险。
思考6:申请令牌时,如何避免密钥暴露?
申请访问令牌和刷新令牌时,传入密钥参与的签名,不把密钥暴露在传输中,减小密钥泄漏风险。
(2)简化模式(Implicit)
应用客户端传入uid、appKey获取访问令牌和过期时长。
应用没有服务端时使用。Steam游戏如果没有服务端,采用这种方式。
访问平台能力,和用户无关,如申请房间,使用的accessToken由appKey和appSecret生成,也无需授权码参与。
(3)密码模式(Resource Owner Password Credentials)
用户在对应用客户端高度信任的情况下,向应用客户端提供用户名和密码,应用客户端靠用户名和密码获得授权服务端授权。
(4)客户端模式(Client Credentials)
应用客户端直接向授权服务端请求访问令牌。
五、扩展方向
(1)unionId
同一个开发者账号有下有多个应用,申请令牌后可以返回unionId,由uid和账号Id生成,是同一个用户跨应用的公用标识。
(2)scope
授权时可以细化到具体的业务域,申请令牌后可以返回scope,表明此时授权的一个或多个业务域。
(3)Oauth1.0
机制:应用端获取requestToken,用户授权后,应用端用授权后的requestToken获取访问令牌。
访问令牌可以存储到一年或一年以上,没有刷新机制。只支持http,不支持https。
(4)安全性
传输安全,如使用SSL防拦截获取和加签防篡改。
客户端安全存储,如授权码、访问令牌加密存储。
应用服务端安全存储,如应用密钥加密存储,甚至应用标识加密存储。
密钥生成的随机性,如16位随机数。
访问安全性,如应用访问业务域限制,甚至域内接口访问限制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
OAuth 2.0协议是用于授权的开放标准,旨在使用户能够授权第三方应用程序访问其资源,而无需将其凭据(如用户名和密码)直接提供给第三方应用程序。以下是OAuth 2.0协议中文文档的一些重要内容: 1. 术语解释:文档解释了OAuth 2.0协议中使用的一些术语,例如“资源所有者”(资源的拥有者,即用户)、“客户端”(需要访问资源的应用程序)以及“授权服务器”(负责验证用户并发布访问令牌的服务器)。 2. 授权流程:文档详细阐述了OAuth 2.0的授权流程。在此流程中,客户端通过向授权服务器发起请求来获取授权,并获得访问令牌。该流程包括用户身份验证、授权许可的获取和令牌颁发等步骤。 3. 授权类型:OAuth 2.0定义了几种授权类型,文档介绍了这些类型及其使用场景。常见的类型包括“授权码模式”(用于Web应用程序)和“密码模式”(用于受信任的应用程序)。 4. 令牌的使用和保护:文档指导开发人员如何使用和保护访问令牌。它提供了一些最佳实践,如使用HTTPS传输令牌、将令牌存储在安全的地方以及定期更新和撤销令牌等等。 5. 错误处理:该文档也包含了许多可能出现的错误和异常情况,并提供了处理这些情况的建议。这些错误可能涉及令牌的无效性、权限不足以及其他安全问题。 总之,OAuth 2.0协议中文文档提供了对该授权标准的详细解释和指导。阅读该文档将帮助开发人员了解OAuth 2.0的工作原理以及如何正确实现该协议,从而确保用户的资源得到安全和可信的访问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风铃峰顶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值