zoukankan      html  css  js  c++  java
  • OAuth2.0(转)

    OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。

            OAuth是为了解决用户将账户授权给其他应用的问题,比如“使用qq登录”,如果我们对每一个应用都给予qq账户与密码,那么将没有安全性可言,一旦一个第三方应用被破解,我们的密码也随着泄露,而使用Oauth授权可以让应用仅仅获得我们qq的一些授权信息,但并不是所有的权限,其只能获取到qq头像,账户,qq秀等……。

    一些术语:

    资源所有者 Resource Owner: 用户

    资源服务器 Resource server: 要给权限的应用,如QQ、微信

    客户端: Third-party application:应用/app/网站

    授权服务器Authorization server : 专业的认证中心

           (A)用户打开客户端以后,客户端要求用户给予授权。

           (B)用户同意给予客户端授权。

           (C)客户端使用上一步获得的授权码,向认证服务器申请令牌。

           (D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌。

           (E)客户端使用令牌,向资源服务器申请获取资源。

           (F)资源服务器确认令牌无误,同意向客户端开放资源。

    客户端获得用户授权(码)->认证服务器给客户端令牌->资源服务器给客户端开放资源

    客户端必须得到用户的授权(authorization grant),才能获得令牌(access token)。OAuth 2.0定义了四种授权方式。

    授权码模式(Authorization Code Grant)
    简化模式/隐式许可(Implicit Grant)
    密码模式(Resource Owner Password Credentials Grant)
    客户端模式(client credentials)
     

    授权码模式(authorization code)是功能最完整、流程最严密的授权模式。它的特点就是通过客户端的后台服务器,与"服务提供商"的认证服务器进行互动。
    简化模式/隐式模式(implicit grant type)不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了"授权码"这个步骤,因此得名。所有步骤在浏览器中完成,令牌对访问者是可见的,且客户端不需要认证,缺点是令牌容易被黑客盗取从而导致状态外漏。
    密码模式(Resource Owner Password Credentials Grant)中,用户向客户端提供自己的用户名和密码。客户端使用这些信息,向"服务商提供商"索要授权。
            在这种模式中,用户必须把自己的密码给客户端,但是客户端不得储存密码。这通常用在用户对客户端高度信任的情况下,比如客户端是操作系统的一部分,或者由一个著名公司出品。而认证服务器只有在其他授权模式无法执行的情况下,才能考虑使用这种模式。

    客户端模式(Client Credentials Grant)指客户端以自己的名义,而不是以用户的名义,向"服务提供商"进行认证。严格地说,客户端模式并不属于OAuth框架所要解决的问题。在这种模式中,用户直接向客户端注册,客户端以自己的名义要求"服务提供商"提供服务,其实不存在授权问题。
     

    下图所示为授权码模式

    参考链接:

    http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

    https://mp.weixin.qq.com/s/6DjDnsy8wf26N0U-pWtG0Q


    原文:https://blog.csdn.net/qq_35642036/article/details/82796275 

  • 相关阅读:
    第三方驱动备份与还原
    Greenplum 解决 gpstop -u 指令报错
    yum安装(卸载)本地rpm包的方法(卸载本地安装的greenplum 5.19.rpm)
    Java JUC(java.util.concurrent工具包)
    netty 详解(八)基于 Netty 模拟实现 RPC
    netty 详解(七)netty 自定义协议解决 TCP 粘包和拆包
    netty 详解(六)netty 自定义编码解码器
    netty 详解(五)netty 使用 protobuf 序列化
    netty 详解(四)netty 开发 WebSocket 长连接程序
    netty 详解(三)netty 心跳检测机制案例
  • 原文地址:https://www.cnblogs.com/NetPig/p/10917327.html
Copyright © 2011-2022 走看看