zoukankan      html  css  js  c++  java
  • OAuth 2 的简单理解

    oauth 2 什么是 OAuth 2.0

         根据 oauth.net 的描述,我们可以将它简述为以下内容:OAuth 2.0 是 OAuth 1.0 框架协议的升级版本,简化了多种平台上身份及授权认证的流程。

         具体的文档可参考 RFC 6749 和 RFC 6750

    oauth 2 OAuth 2.0 的用途

        OAuth 2.0 的主要用途大概有以下几种:

    1. 账号接入:降低用户登录的成本、降低一定的账号风险
    2. 资源访问:以身份权限为手段保护资源处理的有效性、合法性和安全性

    oauth 2 OAuth 2.0 的一般流程

    1. 客户端(如 Web Service)因某些业务需要,以一定的方式向用户(即资源所有者) 请求授权
    2. 用户同意了授权请求,并给予客户端一定的“信物”(如授权码)
    3. 客户端用这个“信物”与授权服务器沟通,请求资源访问的权限
    4. 授权服务器验证该请求,发放资源访问令牌
    5. 客户端通过这个令牌,来试图向资源服务器访问某些资源
    6. 资源服务器验证令牌的有效性和权限范围,发放资源

    oauth 2 获得 OAuth 2.0 授权的模式(Grant Type)

        获得 OAuth 2.0 的授权的模式主要有四种:

    1. 授权码授权(Authorization Code Grant):一般比较多的应用于 Web Server 或其他可以内置调用浏览器的应用,一般通过浏览器的不断重定向来具体实现整个认证授权过程。绝大多数授权平台都支持该方式
    2. 隐式授权(Implicit Grant):一般多用于桌面应用、手机应用。较授权码授权而言,安全性稍有下降,身份令牌有被他人截取的危险。
    3. 密码凭证授权(Resource Owner Password Credentials Grant
    4. 客户端凭证授权(Client Credentials Grant

        当然,除了这四种主要的,还有一种 SAML Bearer 于今年 5月 通过 IETF RFC 7522 标准

    oauth 2 OAuth 2.0 访问令牌的种类(Token Type)

         目前而言, OAuth 2.0 的令牌类型主要有两种:

    1. 不记名式(Bearer Token):一般都要实现这种
    2. 消息认证式(Message Authentication Code Token

        不记名式令牌

         不记名式的访问令牌一般是指不用做什么,客户端获得的令牌什么样,传给资源服务器时就是什么样。

         访问资源时,通常有以下几种形式:

    • 将令牌放在 请求头 Authorization 中,并命名为 Bearer。即 Authorization: Bearer ****(注意空格)。
    • 以access_token=****形式放在 Query String 中,以 GET 方式访问
    • 将access_token=****放在请求体中,以 application/x-www-form-urlencoded 形式(通常是 POST) 访问

        消息认证式令牌

         消息认证式的访问令牌通常是以一定的加密算法对一些参数加密。加密过程通常是将 HmacSHA1 和 HmacSHA256 加密后的结果Base64化,再根据一定的规则填充到请求头 Authorization 中,并将其命名为 MAC。如 Authorization: MAC id="h480djs93hd8",nonce="274312:dj83hs9s",mac="kDZvddkndxvhGRXZhvuDjEWhGeE=",具体规则视平台的不同而不同

    oauth 2 更安全的 OAuth 2.0 

         虽然本身 OAuth 2.0 也是较为安全的,但难免会为了便利性,相对牺牲了部分安全性,有关 OAuth 2.0 的安全防护可参考 RFC 6819

    oauth 2 本文参考资料 

  • 相关阅读:
    2017 ACM-ICPC, Universidad Nacional de Colombia Programming Contest gym101466 题解
    Codeforces Round #634 (Div. 3)题解
    AtCoder Beginner Contest 162 题解
    2018-2019 ACM-ICPC, Asia Nakhon Pathom Regional Contest-gym 102091 题解
    多线程资料
    文件自动导入
    GWT+CodeTemplate+TableCreate快速开发
    阅读大神博客笔记
    Java数据类型
    Java断言assert
  • 原文地址:https://www.cnblogs.com/portal/p/4642865.html
Copyright © 2011-2022 走看看