oAuth
文章目录
前言
OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。
同时,任何第三方都可以使用OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。
业界提供了OAUTH的多种实现如PHP、JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。
互联网很多服务如Open API,很多大公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权的标准。
在官方网站的首页,可以看到下面这段简介:
An open protocol to allow secure API authorization in a simple and
standard method from web, mobile and desktop applications.
大概意思是说OAUTH是一种开放的协议,为桌面、手机或web应用提供了一种简单的,标准的方式去访问需要用户授权的API服务。
OAUTH类似于Flickr Auth、Google’s AuthSub、Yahoo’s BBAuth、 Facebook Auth等。
1、协议特点
-
简单:不管是OAUTH服务提供者还是应用开发者,都很易于理解与使用;
-
安全:没有涉及到用户密钥等信息,更安全更灵活;
-
开放:任何服务提供商都可以实现OAUTH,任何软件开发商都可以使用OAUTH;
2、OAuth2四种授权模式
2.1 授权码模式
授权码模式(authorization code)是功能最完整、流程最严密的授权模式,code保证了token的安全性,即使code被拦截,由于没有app_secret,也是无法通过code获得token的。
2.1.1 角色行为与功能
-
资源所有者
只需要允许或拒绝第三方应用获得授权 -
第三方应用
申请成为资源服务器的第三方应用
获取资源服务器提供的资源 -
授权服务器
提供授权许可code、令牌token等 -
资源服务器
提供给第三方应用注册接口,需要提供给第三方应用app_id和app_secret
提供给第三方应用开放资源的接口
2.1.2 授权码模式授权方式顺序图
2.2隐式授权模式/简化模式
和授权码模式类似,只不过少了获取code的步骤,是直接获取令牌token的,适用于公开的浏览器单页应用,令牌直接从授权服务器返回,不支持刷新令牌,且没有code安全保证,令牌容易因为被拦截窃听而泄露。
2.3密码模式
使用用户名/密码作为授权方式从授权服务器上获取令牌,一般不支持刷新令牌。
2.4客户端凭证模式
一般用于资源服务器是应用的一个后端模块,客户端向认证服务器验证身份来获取令牌。
总结
OAuth2.0 不是一个Authentication Protocol, 而是一个Authorization framework,授予应用对API的访问权限(delegate access to APIs)。OAuth设定了对于API访问的scope的权限,以及支持多种授权方式,以及使用场景。OAuth提供了更好的安全性以及便利,简化了软件系统的复杂性。
相关文章
- OAuth 2.0系列教程(九) 契约请求和响应
- 通用社区登陆组件技术分享(开源)下篇:OAuth 源码下载及原理解说
- OpenID 和 OAuth 的区别
- 使用OAuth打造webapi认证服务供自己的客户端使用
- 谈谈基于OAuth 2.0的第三方认证 [上篇]
- OAuth 2.0协议在SAP产品中的应用
- 关于 SAP Spartacus OAuth 2.0 Resource Owner Password Flow 实现的一些讨论
- SAP Spartacus core里对应后台OAuth设置的硬编码位置
- SAP Commerce Cloud OAuth 实现介绍
- 使用经过oauth验证后的github API,避免调用频次超标的问题
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第10章节--SP2013中OAuth概览 应用程序授权
- prometheus-operator+oauth-proxy+github添加鉴权