欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

理解OAuth2.0

程序员文章站 2022-05-20 13:44:51
...
1. 为了理解OAuth的适用场合,让我举一个假设的例子。
有一个"云冲印"的网站,可以将用户储存在Google的照片,冲印出来。用户为了使用该服务,必须让"云冲印"能够读取用户自己储存在Google上的照片。

如何让云冲印能够访问位于Google上的照片呢?传统方法是,用户将自己的Google用户名和密码,告诉"云冲印",后者就可以读取用户的照片了。这样的做法有很多的缺点,比如:
a) 云冲印有了访问Google全部照片的权限,而实际情况是我们可能仅仅想打印Google中的某一张照片
b) 如果云冲印的网站被黑了,那么保存在云冲印网站上的能够访问Google照片的用户名和密码也就不安全了,但实际上Google网站一直是安全的.
以上只是这种做法众多缺点中的两个缺点,显然这种做法不安全.

2. 为此有了OAuth2.0协议.OAuth2.0协议的全程为Open Standard for Authentication.他的思路是在云冲印和Google之间添加一个授权层,授权层为云冲印颁发一个可以访问Google的AccessToken,而这个行为的授权需要Google照片的拥有者来完成.OAuth2.0有4种授权模式,我们以最复杂的授权码模式为例,来说明OAuth2.0的工作流程.

3. 在讲解OAutn2.0的工作流程之前,先来看几个专用名词.
a)Client:第三方应用程序,本文中又称"客户端"(client),在本文中是"云冲印"应用。
b)Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。
c)User Agent:用户代理,本文中就是指浏览器。
d)Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。
e)Resource Owner:资源所有者,本文中又称"用户"(user)。

4. 下图是用户通过浏览器为客户端授权的过程.

理解OAuth2.0
            
    
    博客分类: 信息安全 OAuth2.0授权

   1)用户点击授权按钮
   2)Client服务器重定向请求到权限服务器,同时将Client相关信息以及请求授权的相关信息以及重定向服务器的地址(这里是指Client地址)作为参数发送给权限服务器.
   3)权限服务器返回授权页面,此页面需要用户点击确定
   4)用户确定授权
   5)权限服务器重定向到Client服务器并将授权码作为参数传递给Client服务器.
   6)Client服务器拿着授权码向权限服务器请求AccessToken
   7)权限服务器进行验证后返回AccessToken
   8]Client服务器返回授权成功页面.

5. 用户为Client服务器授予访问某个Resource Server的临时权限后,就可以直接使用Client了.即可以直接使用云冲印打印位于Google上的招聘了,这个过程,用户不需要感知了.因为他已经授予Client服务器服务Google服务器的权限了.过程如下图:

理解OAuth2.0
            
    
    博客分类: 信息安全 OAuth2.0授权


  1)用户访问Client服务器提供的需要访问Resource Server的应用.
  2)Client进行相关服务操作,这个过程需要访问Resource Server
  3)返回结果给Client服务器
  4)返回结果

  • 理解OAuth2.0
            
    
    博客分类: 信息安全 OAuth2.0授权
  • 大小: 1.7 MB
  • 理解OAuth2.0
            
    
    博客分类: 信息安全 OAuth2.0授权
  • 大小: 1.5 MB
相关标签: OAuth2.0 授权