概述:OAuth 應用程式介面

OAuth2 的布萊特灣實施允許您獲得各種布萊特灣 API 的訪問令牌。

概覽

Brightcove的實現包括兩個部分:

  • OAuth API-提供對所有可用OAuth功能的訪問

  • OAuth 憑據用戶界面-通過 Studio 的帳戶設置界面訪問,UI 提供了一種簡單的方法來註冊將使用 Brightcove API 的應用程序,並為他們生成客戶端 ID 和客戶端密碼。看管理 API 身份驗證憑據有關使用 OAuth UI 的說明。

另見API參考 .

術語詞彙

OAuth

開放的授權標準。OAuth 代表資源所有者為客戶端應用程序提供對服務器資源的「安全委託訪問」。OAuth本質上允許授權服務器在資源所有者的批准下將訪問令牌發布給第三方客戶端。然後,客戶端使用訪問令牌訪問資源服務器託管的受保護資源

範圍

描述一組資源(可通過API訪問)和對這些資源的某些操作(例如“讀取”和“寫入”)的數據對象。訪問令牌的範圍限制了您可以通過顯示該令牌來做什麼。

客戶

最終用戶用於通過Brightcove API訪問資源的應用。

客戶編號

OAuth服務生成的客戶端的唯一標識符。

客戶機密

與客戶端ID一起使用的一串比特,用作驗證客戶端的密碼。

訪問令牌

字符串,提供對API的臨時訪問。OToken服務會根據請求為客戶端返回訪問令牌。

操作序列,導致成功訪問受OAuth保護的資源。

基本網址

OAuth API的基本URL是:

    https://oauth.brightcove.com/v4
    
    

客戶憑證流

在客戶端憑據流程中,您的應用將發出訪問令牌請求,並將您的客戶端ID和客戶端機密與請求一起傳遞給OAuth服務。當前,這是Brightcove客戶唯一支持的流程。

客戶端憑據流的確切工作方式將取決於方案。

組織應用

在這種情況下,您有一個應用程序需要與一個或多個Brightcove API進行交互,僅適用於屬於您組織的一個或多個帳戶。該應用未綁定到任何特定用戶。在這種情況下,工作流程如下所示:

組織應用程式的用戶端認證工作流程
組織應用程式的用戶端認證工作流程

要實現此方案,您需要執行以下操作:

  1. 使用OAuth用戶界面或OAuth服務,獲取應用的客戶端ID和密碼-用戶界面可讓您獲取單個或多個帳戶的客戶端ID和密碼。這是一次性的操作。

  2. 向您的服務器端應用添加邏輯,以向OAuth API發出訪問令牌請求。實施將取決於您應用程序的語言(我們鼓勵您使用現有的OAuth2 庫為您的語言,如果可能的話),但您將撥打的電話將是一個 POST 請求:

        https://oauth.brightcove.com/v4/access_token
        
        

    client_idclient_secret被傳遞為username:password在基本授權標頭中:

        Authorization: Basic {client_id}:{client_secret}
        
        

    整個{client_id}:{client_secret}字符串必須是 Base64 編碼的(例如,在 Node.js 中,您可以使用Buffer.toString("base64")方法)。CURL 會自動進行 BASE64 編碼,因此您只需將憑據傳遞為user {client_id}:{client_secret} .您還需要包括一個Content-Type: application/x-www-form-urlencoded標頭。

    請求正文將包含鍵/值對grant_type=client_credentials .請注意,由於Content-typex-www-form-urlencoded,您也可以將其作為參數附加到請求 URL:

        https://oauth.brightcove.com/v4/access_token?grant_type=client_credentials

    下面是一個非常基本的 Node.js 應用程序,它將獲得一個access_token給出一個有效的client_idclient_secret .

        /*
        * Simple node app to get an access_token for a Brightcove API
        * You will need to substitute valid client_id and client_secret values
        * for {your_client_id} and {your_client_secret}
        */
        var request = require('request');
        var client_id = "{your_client_id}";
        var client_secret = "{your_client_secret}";
        var auth_string = new Buffer(client_id + ":" + client_secret).toString('base64');
        console.log(auth_string);
        request({
        method: 'POST',
        url: 'https://oauth.brightcove.com/v4/access_token',
        headers: {
        'Authorization': 'Basic ' + auth_string,
        'Content-Type': 'application/x-www-form-urlencoded'
        },
        body: 'grant_type=client_credentials'
        }, function (error, response, body) {
        console.log('Status: ', response.statusCode);
        console.log('Headers: ', JSON.stringify(response.headers));
        console.log('Response: ', body);
        console.log('Error: ', error);
        });
        
        
  3. 響應主體將如下所示:

        {
        "access_token": "ACikM-7Mu04V5s7YBlKgTiPu4ZO3AsTBlWt-73l5kXRN4IeRuIVlJHZkq_lFQdZBYfzT9B_nHNgcmNFdalxSiNdqOBaaV7wQCCnRCua_efHNCg9d_yLbezcjxr3AGcBKy9a8_t-uTMTA46T24LKMOBGBNJFkyATSZI4JuxU71VIyGF9hDisbKHmKC5G5HdQ0nJgyCD1w1zkKrB1CpFb5iiBuA_XOzehF-Xf5DBYnSkDhzzByuFwTv9dU9d7W6V2OuiKiTzCzY3st01qJTk6-an6GcAOD4N5pdN8prvvMDQhz_HunJIamvVGqBz7o3Ltw8CFFJMXKQdeOF8LX31BDnOvMBEz-xvuWErurvrA0r6x5eZH8SuZqeri4ryZAsaitHiJjz9gp533o",
        "token_type": "Bearer",
        "expires_in": 300
        }
        
        

    您將需要捕獲access_token .除非你的電話會斷斷續續,在這種情況下你會要求一個新的access_token對於每個 API 調用,您還需要捕獲expires_in值,以便您可以在以後的請求中使用它來檢查您的令牌是否仍然有效——如果無效,您將需要請求一個新的令牌。這expires_in值以秒為單位。

  4. 一旦你有access_token,您可以調用 Brightcove API,包括Authorization表格中的標題:

        Authorization: Bearer {access_token}
        
        

獲取訪問令牌有關更多詳細信息和代碼示例。

一般授權

此方案主要適用於Brightcove合作夥伴,這些合作夥伴將創建各種組織中的Brightcove用戶可以使用的應用程序。此方案的工作流程如下所示:

多組織應用程序的客戶端憑據工作流
多組織應用程序的客戶端憑據工作流

實施此方案而不是第一個方案的唯一區別是,用戶必須從OAuth UI中獲取您的應用的客戶端ID和密碼,並通過表單將其提供給您。然後,您會將這些傳遞給您的應用程序,以提交請求access_token .除此之外,一切都將是相同的。

獲取客戶憑證

獲取客戶端憑據的最簡單方法(client_idclient_secret ) 是使用OAuth 界面 .但是,如果您更喜歡直接從 OAuth 服務獲取它們,您可以通過向https://oauth.brightcove.com/v4/client_credentials,傳遞以下標頭:

  • Content-Type: application/json
  • Authorization: BC_TOKEN your BC_TOKEN

您還需要發送JSON對像作為有效負載:

    {
      "type": "credential",
      "maximum_scope": [
        {
          "identity": {
            "type": "video-cloud-account",
            "type": "perform-account",
            "account-id": account_id1
          },
          "operations": [
            "video-cloud/player/all"
          ]
        },
        {
          "identity": {
          "type": "video-cloud-account",
          "type": "perform-account",
          "account-id": account_id2
        },
        "operations": [
          "video-cloud/player/all"
        ]
        }
      ],
      "name": "AnalyticsClient",
      "description": "My analytics app"
    }
    
    

作業

這裡唯一不同的是operations值,這將取決於您想要訪問哪個 API,以及您是否想要訪問讀取、寫入或這兩種操作。看客戶端憑證請求的 API 操作獲取當前支持的所有操作的列表。

有關使用 curl 或 Postman 獲取客戶端憑據的詳細指南,請參閱:

使用OAuth

要構建邏輯以處理獲取API請求的訪問令牌,有兩種常規方法可以進行。

如果要構建單個服務器端應用程序,則將邏輯構建到應用程序中是有意義的。操作順序如下所示:

單一應用程式序列
單一應用程式序列

相反,如果您將構建需要調用Brightcove API的多個應用程序,或者如果您創建客戶端Web應用程序,則將代碼合併起來以將訪問令牌合併到單個代理中將更有意義。在這種情況下,操作序列將如下所示:

代理主機順序
代理主機順序

快速開始有關創建簡單代理的詳細說明。

客戶樣本和庫

我們創造了示例客戶端實現用多種語言為您提供實施模型。

也有適用於多種語言的OAuth2庫,我們通常鼓勵您在可能的情況下使用這些庫,而不是與OAuth API進行交互。以下是可用庫的部分列表。有關更廣泛的列表,請參閱 https://oauth.net/2/

蟒蛇
的PHP
可可
可可
iOS
iPhone和iPad
iOS和Mac MacOS
iOS和Mac MacOS
爪哇
紅寶石
。淨
Qt / C ++
氧氣2