OAuth2背景

背景需求

首先了解一个经典的需求:

照片拥有者想要在云冲印服务上打印照片,云冲印服务需要访问云存储服务上的资源

资源拥有者:照片拥有者

客户应用:云冲印

受保护的资源:照片

下面是三种需求解决方案

方式一:用户名密码复制

用户将自己的"云存储"服务的用户名和密码,告诉"云冲印",(即资源服务器的用户名和密码存储在客户应用服务器上)后者就可以读取用户的照片了。这样的做法有以下几个严重的缺点。

(1)"云冲印"为了后续的服务,会保存用户的密码,这样很不安全。

(2)Google不得不部署密码登录,而我们知道,单纯的密码登录并不安全。

(3)"云冲印"拥有了获取用户储存在Google所有资料的权力,用户没法限制"云冲印"获得授权的范围和有效期。

(4)用户只有修改密码,才能收回赋予"云冲印"的权力。但是这样做,会使得其他所有获得用户授权的第三方应用程序全部失效。

(5)只要有一个第三方应用程序被破解,就会导致用户密码泄漏,以及所有被密码保护的数据泄漏。

总结:

将受保护的资源中的用户名和密码存储在客户应用的服务器上,使用时直接使用这个用户名和密码登录

适用于同一公司内部的多个系统,不适用于不受信的第三方应用

方式二:通用开发者key

key是事先在"云存储"服务和"云冲印"服务间约定好的,适用于合作商或者授信的不同业务部门之间

方式三:颁发令牌

需要考虑如何管理令牌、颁发令牌、吊销令牌,需要统一的申请令牌和颁发令牌的协议

令牌类比仆从钥匙

OAuth2背景

背景需求

首先了解一个经典的需求:

照片拥有者想要在云冲印服务上打印照片,云冲印服务需要访问云存储服务上的资源

资源拥有者:照片拥有者

客户应用:云冲印

受保护的资源:照片

下面是三种需求解决方案

方式一:用户名密码复制

用户将自己的"云存储"服务的用户名和密码,告诉"云冲印",(即资源服务器的用户名和密码存储在客户应用服务器上)后者就可以读取用户的照片了。这样的做法有以下几个严重的缺点。

(1)"云冲印"为了后续的服务,会保存用户的密码,这样很不安全。

(2)Google不得不部署密码登录,而我们知道,单纯的密码登录并不安全。

(3)"云冲印"拥有了获取用户储存在Google所有资料的权力,用户没法限制"云冲印"获得授权的范围和有效期。

(4)用户只有修改密码,才能收回赋予"云冲印"的权力。但是这样做,会使得其他所有获得用户授权的第三方应用程序全部失效。

(5)只要有一个第三方应用程序被破解,就会导致用户密码泄漏,以及所有被密码保护的数据泄漏。

总结:

将受保护的资源中的用户名和密码存储在客户应用的服务器上,使用时直接使用这个用户名和密码登录

适用于同一公司内部的多个系统,不适用于不受信的第三方应用

方式二:通用开发者key

key是事先在"云存储"服务和"云冲印"服务间约定好的,适用于合作商或者授信的不同业务部门之间

方式三:颁发令牌

需要考虑如何管理令牌、颁发令牌、吊销令牌,需要统一的申请令牌和颁发令牌的协议

令牌类比仆从钥匙

于是出现了OAuth2协议

因此事实上,说简单点:OAuth 2.0标准化了Access Token的请求和响应部分

OAuth2应用

1、微服务安全

现代微服务中系统微服务化以及应用的形态和设备类型增多,不能用传统的登录方式

核心的技术不是用户名和密码,而是token,由AuthServer颁发token,用户使用token进行登录

2、社交登录

例如微信登录,支付宝登录等

于是出现了OAuth2协议

因此事实上,说简单点:OAuth 2.0标准化了Access Token的请求和响应部分

OAuth2应用

1、微服务安全

现代微服务中系统微服务化以及应用的形态和设备类型增多,不能用传统的登录方式

核心的技术不是用户名和密码,而是token,由AuthServer颁发token,用户使用token进行登录

2、社交登录

例如微信登录,支付宝登录等



腾讯云社区邀请各位技术博主加入,福利多多噢!
Last modification:August 11, 2020
如果觉得我的文章对你有用,请随意赞赏