zoukankan      html  css  js  c++  java
  • 第三方与OAuth协议

    1. OAuth是什么?

    OAuth (开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如 照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。

    2. Oauth1.0与Oauth2.0的区别

    Ⅰ.Oauth1.0与Oauth2.0是相互不兼容的,所以他们为我们提供了不同的授权方式:

    2.0的用户授权过程有3步:

    A)用户到授权服务器,请求授权,然后返回授权码(AuthorizationCode)

    B)客户端由授权码到授权服务器换取访问令牌(access token)

    C)用访问令牌去访问得到授权的资源、

    总结:获取授权码(Authorization Code)—>换取访问令牌(access_token)—>访问资源:

    1.0的授权分4步,

    A)客户端到授权服务器请求一个授权令牌(requesttoken&secret)

    B)引导用户到授权服务器请求授权

    C)用访问令牌到授权服务器换取访问令牌(accesstoken&secret)

    D)用访问令牌去访问得到授权的资源

    总结:请求授权令牌(request token&secret)—>换取访问令牌(access token&secret)—>访问资源

    Ⅱ.1.0协议每个token都有一个加密,2.0则不需要。这样来看1.0似乎更加安全,但是2.0要求使用https协议,安全性也更高一筹。

    Ⅲ.2.0充分考虑了客户端的各种子态,因而提供了多种途径获取访问令牌,有:授权码、

    客户端私有证书、资源拥有者密码证书、刷新令牌等方式,而且验证过程更为简洁。

    相比之下 1.0只有一个用户授权流程。


    3. OAuth2.0 --- 四种授权模式

    3-1. 隐式授权模式(Implicit Grant)

    img

    • 第一步:用户访问页面时,重定向到认证服务器。
    • 第二步:认证服务器给用户一个认证页面,等待用户授权。
    • 第三步:用户授权,认证服务器想应用页面返回Token
    • 第四步:验证Token,访问真正的资源页面

    img

    3-2. 授权码授权模式(Authorization code Grant)

    img

    • 第一步:用户访问页面
    • 第二步:访问的页面将请求重定向到认证服务器
    • 第三步:认证服务器向用户展示授权页面,等待用户授权
    • 第四步:用户授权,认证服务器生成一个code和带上client_id发送给应用服务器
    • ​ 然后,应用服务器拿到code,并用client_id去后台查询对应的client_secret
    • 第五步:将code、client_id、client_secret传给认证服务器换取access_token和
    • ​ refresh_token
    • 第六步:将access_token和refresh_token传给应用服务器
    • 第七步:验证token,访问真正的资源页面

    img

    案例Github自取:https://github.com/PinkPig-cq/springSecurityoAuth

    3-3. 密码模式(Resource Owner Password Credentials Grant)

    img

    • 第一步:用户访问用页面时,输入第三方认证所需要的信息(QQ/微信账号密码)
    • 第二步:应用页面那种这个信息去认证服务器授权
    • 第三步:认证服务器授权通过,拿到token,访问真正的资源页面

    优点:不需要多次请求转发,额外开销,同时可以获取更多的用户信息。(都拿到账号密码了)

    缺点:局限性,认证服务器和应用方必须有超高的信赖。(比如亲兄弟?)

    应用场景:自家公司搭建的认证服务器

    3-4. 客户端凭证模式(Client Credentials Grant)

    img

    • 第一步:用户访问应用客户端
    • 第二步:通过客户端定义的验证方法,拿到token,无需授权
    • 第三步:访问资源服务器A
    • 第四步:拿到一次token就可以畅通无阻的访问其他的资源页面。

    这是一种最简单的模式,只要client请求,我们就将AccessToken发送给它。这种模式是最方便但最不安全的模式。因此这就要求我们对client完全的信任,而client本身也是安全的。

    因此这种模式一般用来提供给我们完全信任的服务器端服务。在这个过程中不需要用户的参与。

    总结:

    1. 三方登录时基于 Oauth2.0协议来完成

    2. 什么是Oauth, Oauth1.0与Oauth2.0的区别

    3. Oauth 2.0的四种授权模式

  • 相关阅读:
    odoo12 权限配置1
    Python 安装第三方库,pip install 安装慢,安装不上的解决办法
    odoo12 如何设置超级用户
    Python odoo中嵌入html简单的分页功能
    odoo Windows10启动debug模式报错(Process finished with exit code -1073740940 (0xC0000374))
    Python数据可视化库-Matplotlib(二)
    Python数据可视化库-Matplotlib(一)
    Python Pandas库的学习(三)
    Python Pandas库的学习(二)
    Python Pandas库的学习(一)
  • 原文地址:https://www.cnblogs.com/chao460/p/13934070.html
Copyright © 2011-2022 走看看