• OAuth2.0授权机制说明


    授权机制说明

     

    1 简介

    优酷对第三方应用用户授权采用OAuth2.0标准

    2 OAuth2.0 授权方式

    优酷支持OAuth 2.0的三种授权方式,请根据平台选用不同的授权方式:

    2.1 通用授权方式

    Web应用授权 Authorization Code Grant

    说明

    Web应用授权分为两步
    1 请求用户到优酷授权,授权成功后将授权码以URL跳转的形式传给第三方网站
    2 第三方网站根据授权码换取Access Token

    交互流程图

       +----------+
       | resource |
       |   owner  |
       |          |
       +----------+
            ^
            |
           (B)
       +----|-----+          Client Identifier      +---------------+
       |         -+----(A)-- & Redirection URI ---->|               |
       |  User-   |                                 | Authorization |
       |  Agent  -+----(B)-- User authenticates --->|     Server    |
       |          |                                 |               |
       |         -+----(C)-- Authorization Code ---<|               |
       +-|----|---+                                 +---------------+
         |    |                                         ^      v
        (A)  (C)                                        |      |
         |    |                                         |      |
         ^    v                                         |      |
       +---------+                                      |      |
       |         |>---(D)-- Authorization Code ---------'      |
       |  Client |          & Redirection URI                  |
       |         |                                             |
       |         |<---(E)----- Access Token -------------------'
       +---------+       (w/ Optional Refresh Token)

    交互步骤

    授权请求

    GET /authorize?response_type=code&client_id=s6BhdRkqt3&state=xyz&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb&scope=a%20b
    Host: server.example.com

    授权成功跳转

    HTTP/1.1 302 Found
    Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA&state=xyz

    Access Token 请求

    POST /token HTTP/1.1
    Host: server.example.com
    Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
    grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb

    Access Token 返回

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Cache-Control: no-store
    Pragma: no-cache
    
    {
      "access_token":"2YotnFZFEjr1zCsicMWpAA",
      "token_type":"example",
      "expires_in":3600,
      "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
      "example_parameter":"example_value"
    }

    详细接口文档见 查看

    2.2 用户名密码授权

    客户端应用(不支持WebView)Resource Owner Password Credentials Grant
    只有合作级别的桌面客户端或移动客户端应用才可以调用

    说明

    客户端应用授权只需一步
    1 通过用户名密码直接换取Access Token

    交互流程图

       +----------+
       | Resource |
       |  Owner   |
       |          |
       +----------+
            v
            |    Resource Owner
           (A) Password Credentials
            |
            v
       +---------+                                  +---------------+
       |         |>--(B)---- Resource Owner ------->|               |
       |         |         Password Credentials     | Authorization |
       | Client  |                                  |     Server    |
       |         |<--(C)---- Access Token ---------<|               |
       |         |    (w/ Optional Refresh Token)   |               |
       +---------+                                  +---------------+

    交互步骤

    Access Token 请求

    POST /token HTTP/1.1
    Host: server.example.com
    Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
    Content-Type: application/x-www-form-urlencoded;charset=UTF-8
    
    grant_type=password&username=johndoe&password=A3ddj3w

    Access Token 返回

    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Cache-Control: no-store
    Pragma: no-cache
    
    {
      "access_token":"2YotnFZFEjr1zCsicMWpAA",
      "token_type":"example",
      "expires_in":3600,
      "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
      "example_parameter":"example_value"
    }

    接口文档见 查看

    2.3 Javascript应用

    Javascript应用授权 Implicit Grant

    说明

    Javascript应用授权分为两步
    1 请求用户到优酷授权,授权成功后将Access Token以URL跳转的形式传给第三方网站
    2 第三方网站通过Javascript从跳转URL中直接取到Access Token

    交互流程图

       +----------+
       | Resource |
       |  Owner   |
       +----------+
            ^
           (B)
       +----|-----+          Client Identifier     +---------------+
       |         -+----(A)-- & Redirection URI --->|               |
       |  User-   |                                | Authorization |
       |  Agent  -|----(B)-- User authenticates -->|     Server    |
       |          |                                |               |
       |          |<---(C)--- Redirection URI ----<|               |
       |          |          with Access Token     +---------------+
       |          |            in Fragment
       |          |                                +---------------+
       |          |----(D)--- Redirection URI ---->|   Web-Hosted  |
       |          |          without Fragment      |     Client    |
       |          |                                |    Resource   |
       |     (F)  |<---(E)------- Script ---------<|               |
       |          |                                +---------------+
       +-|--------+
        (A)  (G) Access Token
         |    |
         ^    v
       +---------+
       |  Client |
       +---------+

    交互步骤

    授权请求

    GET /authorize?response_type=token&client_id=s6BhdRkqt3&state=xyz&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb&scope=a%20b
    Host: server.example.com

    授权成功跳转

    HTTP/1.1 302 Found
    Location: http://example.com/cb#access_token=2YotnFZFEjr1zCsicMWpAA&state=xyz&token_type=example&expires_in=3600&scope=a%20b

    授权失败

    HTTP/1.1 302 Found
    Location: https://client.example.com/cb#error=access_denied&state=xyz

    接口文档见 查看

    3 OAuth2.0 SDK

     

    4 OAuth2.0 资源

    官方网站 http://oauth.net/2/

  • 相关阅读:
    解决帝国CMS搜索页面模板不支持灵动标签和万能标签的方法
    Visual Studio Code 相关
    随机的背景图案
    将视频做为网页背景 超炫!
    gunicorn部署Flask服务
    查看mysql数据库及表编码格式
    查看修改mysql编码方式
    【ssm整合打印sql语句】
    【mybatis在控制台打印sql语句配置】
    【mybatis 的foreach的用法】
  • 原文地址:https://www.cnblogs.com/fx2008/p/3282524.html
Copyright © 2020-2023  润新知