OAuth 2.0 入门指南:理解关键概念和流程
1 OAuth官网地址
OAuth 2.0 — OAuthhttps://oauth.net/2/
2 OAuth2能解决哪些问题域和场景?
? ? 2.1 开放系统间授权
?????? ?(1)社交联合登录
? ? ? ? (2)开放API平台
? ? 2.2 现代微服务安全
? ? ? ? (1)单页浏览器APP(HTML5、JS、无状态)
? ? ? ? (2)无线原生APP
????????(3)服务器端WebApp
????????(4)微服务与API间调用
? ? 2.3 企业内部应用认证授权(IAM/SSO)
3 初识OAuth2
场景描述
假设有个客户应用需要访问用户的数据,如下图所示↓
????????如果说这个时候我们来了一个恶意的客户,那么如果没有安全限制的话,就会出现资源服务器也会把用户数据给到恶意的客户,所以我们需要一种安全保护机制来保护用户数据。
????????业界实践是提前给客户应用颁发一个Access Token(访问令牌),它表示客户应用被授权可以访问用户数据,如下图所示↓?
????????该机制可以工作的前提是必须提前给客户应用颁发Access Token,那么谁来颁发Access Token呢?
????????答:授权服务器,由它来颁发和管理Access Token。
客户应用和授权服务器之间的交互流程如下:
?(1)首先客户应用请求Access Token
?(2)授权服务器征询用户意见,是否将权限授予客户应用
?(3)如果用户同意,则授权服务器会生成一个Access Token 并将它颁发给客户应用
?(4)有了这个Access Token客户应用就可以访问资源服务器拿到用户数据了
3.1 什么是OAuth2.0?
(1)用于REST/APIs的代理授权框架(delegated authorization framework)
(2)基于令牌Token的授权,在无需暴露用户密码的情况下,使应用能获取对用户数据的有限访问权限
(3)解耦认证和授权,将认证和授权进行分离
(4)事实上的标准安全框架,支持多种用例场景
????????a、服务器端WebApp
????????b、浏览器单页SPA
????????c、无线/原生APP
????????d、服务器对服务器之间
令牌是OAuth2.0的核心,针对令牌它是有一个比喻的,把令牌类比为仆从钥匙(Valet Key),给应用授予有限的访问权限,让应用能够代表用户去访问用户的数据。
3.2 OAuth2.0的历史简介
如下图所示↓
3.3 OAuth2.0的优势
(1)OAuth2.0比OAuth1.0易于实现
(2)更安全,客户端不接触用户密码,服务器端更容易集中保护
(3)广泛传播并被持续采用
(4)短寿命和封闭的Token(可以配置时限)
(5)资源服务器和授权服务器解耦
(6)集中式授权,简化客户端
(7)HTTP/JSON友好,易于请求和传递Token
(8)考虑多种客户端架构场景
(9)客户可以具有不同的信任级别(有一些细分权限)
3.4 OAuth2.0的不足
(1)协议框架太宽泛,造成各种实现的兼容性和互操作性差
(2)和OAuth1.0不兼容
(3)OAuth2.0不是一个认证协议,OAuth2.0本身并不能告诉你任何用户信息
3.5 OAuth2.0的四大角色
授权流程渠道(channels)
- 前端渠道
凡是资源拥有者、客户应用和授权服务器之间的发生的一些交互(没有资源服务器) - 后端渠道
凡是资源服务器、客户应用和授权服务器之间的发生的一些交互(没有资源拥有者)
3.6 OAuth2.0的术语
- 客户应用(Client Application)
通常是一个Web或者无线应用,它需要访问用户的受保护资源 - 资源服务器(Resource Server)
是一个Web站点或者web service API,用户的受保护数据保存于此 - 授权服务器(Authorized Server)
在客户应用成功认证并获得授权之后,向客户应用颁发说令牌Access Token - 资源拥有者(Resource Owner)
资源的拥有人,想要分享某些资源给第三方应用 - 客户凭证(Client Credentials)
客户的clientId和密码用于认证客户 - 令牌(Tokens)
授权服务器在接收到客户请求后,颁发的访问令牌 - 作用域(Scopes)
客户请求访问令牌时,由资源拥有者额外指定的细分权限(permission)
3.7 OAuth2.0的令牌类型
3.8 OAuth2.0的误解
4 学习回顾
- OAuth的本质是如何获取Token、如何使用Token
- OAuth是一种在系统之间的代理授权(delegation authorization)协议
- OAuth提供一个宽泛的协议框架,具体按全场景需要定制
- OAuth使用代理协议的方式解决密码共享反模式问题
客户应用类型如,下图所示↓
四种OAuth2.0授权,下图所示↓
- 授权码模式(Authorization Code)
- 简化模式(Implicit)
- 密码模式(Resource Owner Password Credentials)
- 客户端模式(Client Credentials)
未来应用,授权类型选型流程,下图所示↓
授权服务器的组成,下图所示↓
? ? 1、授权端点(Authorize Endpoint)
? ? 2、Token端点(Token Endpoint)
? ? 3、校验端点(Introspection Endpoint)
? ? 4、吊销端点(Revocation Endpoint)
Spring Security OAuth2架构,下图所示↓
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!