サポート サポートへのお問い合わせ | システムステータス システムステータス
ページコンテンツ

    API リクエストの認証

    このトピックでは、ブライトコーブ REST API へのリクエストの認証について説明します。

    はじめに

    ブライトコーブ REST API のほとんどは、認証の基礎として OAuth2 を使用しています。ここでは、OAuth の実装について詳しく説明します。

    ただし、最初に、2つのAPIが認証に異なるアプローチを使用することに注意してください。

    ポリシーキー認証:再生API

    Playback API は、主にプレーヤーまたは Web ポータルからビデオやプレイリストのデータを取得するために使用され、認証にpolicy_key、を使用します。通常、Acceptヘッダーの引数として渡されます。

            Accept: application/json;pk={policy_key}

    ポリシーキーは Brightcove プレーヤー用に自動的に生成され、プレーヤーの設定から取得することも Policy API を使用して生成することもできます。

    API キー認証:ライブ API

    ライブ API は、リクエストを認証するためにアカウントを設定したときに提供される API キーを使用します。API X-API-KEYキーはヘッダーで渡されます。

            X-API-KEY : {YOUR_APIKey}

    OAuth2 認証

    Video Cloud 用の他の REST API では、認証に OAuth2 を使用します。OAuth2 に精通している人には、クライアントの認証情報フローを使用します。次の 2 つの操作があります。

    1. クライアント資格情報の取得:これは、Studioの管理ツールの [ API 認証 ] ページを使用して簡単に実行できる 1 回限りの操作です。詳細および手順については、「 API 認証資格情報の管理」を参照してください。
    2. アクセストークンを取得する:各 API リクエストには、Authorizationヘッダーで送信されたアクセストークンが含まれている必要があります。
              Authorization: Bearer {access_token}

      アクセストークンは 5 分間存続するため、繰り返される API リクエストを生成するプロセスを実行しない限り、リクエストごとに新しいものを取得したいと思うでしょう。

      アクセストークンは、リクエストでクライアント認証情報をブライトコーブの OAuth API に送信することで取得されます。詳細については、アクセストークンの取得を参照してください。API 呼び出しをテストするための 1 回限りのトークンを取得するために使用できるサンプルアプリもあります。人気のあるRESTクライアントを構成するための手順もあります郵便配達員そして不眠症

    OAuthAPIを介したクライアント資格情報

    OAuth APIを使用してクライアント資格情報を作成する必要がある場合は、クライアント資格情報を取得するための手順を以下に示します。最初に、クライアント資格情報要求の認証に使用されるBC_TOKENを取得する必要があります。

    BC_TOKENアカウント番号とアカウント番号を入手する

    を入手するには、Studio にログインする必要がありますBC_TOKEN

    1. 通常どおりStudioにログインします。
    2. アカウント番号(StudioではパブリッシャーIDと呼ばれます)が必要です。これは、Studioのアカウント情報にアクセスして取得できます。
      アカウントID
      アカウントID
    3. Studioの任意のページを開いた状態で、ブラウザの開発ツールを開き、コンソールに移動して、次のコードに貼り付けます。
            var cookiesArray = document.cookie.split(";"), cookiesObj = {}, i, tmpArray = [];
            for (i = 0; i < cookiesArray.length; i++) {
                tmpArray = cookiesArray[i].split("=");
                if (tmpArray[0].indexOf('BC_TOKEN') > -1) {
                    cookiesObj.BC_TOKEN = tmpArray[1];
                }
            }
            window.prompt("BC_TOKEN:", cookiesObj.BC_TOKEN);

      ...そしてリターンキーを押します。

    4. BC_TOKEN次の内容を含むプロンプトが表示されます。
      BC_TOKEN
      BC_TOKEN
    5. BC_TOKEN をお持ちの場合は、「クライアント資格情報の取得」セクションに進みます。何らかの理由で前の手順で BC_TOKEN を取得しなかった場合は、コンソールに移動し、「」と入力しdocument.cookies、「return」キーを押します。
    6. ページのすべてのクッキーは、セミコロンで区切られたリストで返されます。リスト内の BC_TOKEN クッキーを検索し、値をコピーします。
      コンソールからBC_TOKENを取得する
      コンソールからBC_TOKENを取得する

    ゲットclient_credentials

    これで、クライアントの資格情報を取得するために OAuth サービスを呼び出す準備が整いました。資格情報を要求するクライアントアプリケーション名を指定する必要があります。名前は任意であり、資格情報の目的を追跡するのに役立ちます。ここでは、「ingest-profiles-api-client」を使用します。また、アクセスする操作のスコープを配列で指定する必要があります。ここでは、を使用します。利用可能な操作は次のとおりです。クライアント資格情報要求のAPI操作。以下の手順では、Ingest ProfilesAPIに必要な操作を指定します。

    1. 次の curl コマンドを編集し、コマンドラインに貼り付け、 Return キーを押します。次の 3 つの値には、特定の値を指定する必要があります。
      • あなたのBC_TOKEN
      • 認証情報名
      • あなたのアカウント ID
            curl \
              --include \
              --header "Authorization: BC_TOKEN your_BC_TOKEN" \
              --data 'name=ingest-profiles-api-client&maximum_scope=[{
                  "identity": {
                    "type": "video-cloud-account",
                    "account-id": your_account_id
                  },
                  "operations": [
                        "video-cloud/ingest-profiles/profile/read",
                        "video-cloud/ingest-profiles/profile/write",
                        "video-cloud/ingest-profiles/account/read",
                        "video-cloud/ingest-profiles/account/write"
                    ]
                }]' \
            https://oauth.brightcove.com/v4/client_credentials
    2. レスポンスは次のようになります(書式が追加されています)。
            {
              "redirect_url": null,
              "maximum_scope": [
                {
                  "identity": {
                    "type": "video-cloud-account",
                    "account-id": your_video_cloud_account_id
                  },
                  "operations": [
                    "video-cloud/ingest-profiles/profile/write",
                    "video-cloud/ingest-profiles/account/write",
                    "video-cloud/ingest-profiles/profile/read",
                    "video-cloud/ingest-profiles/account/read"
                  ]
                }
              ],
              "name_html": "ingest-profiles-api-client",
              "issued_to": "your_email@host.com",
              "trusted": null,
              "expires_at": null,
              "issued_at": "2015-06-01T15:09:00Z",
              "name": "ingest-profiles-api-client",
              "description_html": null,
              "revoked": null,
              "type": "credential",
              "client_secret": "Ifckr6cWtxOh_NZnEVhKCgcqZaqoMcPuoJ-VGuivIE_psPoPUt2hGqUK15uPON3x3m748ElazZoOKPxbI3-4nQ",
              "description": null,
              "client_id": "da270d86-f3cd-4ee6-85b0-047df97a0db2",
              "issued_user": your_video_cloud_account_id
            }
    3. client_idをコピーして保存しclient_secret、, あなたが取得する必要があるいつでもこれらが必要になりますaccess_token .

    OAuthAPIを介してトークンにアクセスする

    アクセストークンは、クライアントの資格情報とは異なり、有効期間が短く、現在5分で期限切れになります。APIリクエストごとに新しいものを取得する必要があります。もちろん、アプリにロジックを組み込んで最新のアクセストークンをチェックし、タイムアウトしていないかどうかを確認することもできますが、Ingest Profiles APIへのリクエストはほとんどない可能性が高いため、そうする理由はありません。 。

    実際、APIは、使用頻度が低いため、その周りにアプリを構築する価値がまったくない場合があります。別の方法は、このシェルスクリプトブライトコーブラーニングサービスが構築したもの。クライアントIDとシークレット、APIリクエストとメソッド、およびリクエストデータを入力できます。その後、access_token、APIリクエストを作成し、レスポンスを出力します。(シェルスクリプトは、MacMacOSおよびその他のUnix / LinuxシステムにネイティブにインストールされるcURLを使用することに注意してください。 Windowsにインストールできます

    アクセストークンを取得するには、次の宛先にPOSTリクエストを送信します。

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

    この呼び出しでは、次のヘッダーを渡す必要があります。

    • Content-Type: application/x-www-form-urlencoded
    • Authorization: Basic {client_id}:{client_secret}

    全体{client_id}:{client_secret}文字列はBase64でエンコードされている必要があります(文字列を次のように渡すと、curlは自動的にBase64でエンコードします--user資格情報;他の言語では、Base64エンコーディングを自分で処理する必要があります)。

    また、次のキー/値のペアをリクエスト本文または URL パラメータとして送信する必要があります。

          grant_type=client_credentials

    応答は次のようになります(ここでは読みやすくするためにプリティ印刷されています)。

          {
              "access_token": "ANB7xKhiUZmwltVd3f1odcHHM9VAwg02kwmLwtZwHv3SxGCOWLUf5W4G7X22PRjmR9StvFUqzpVZ1suOfyfOigdi-rnohxyEaSSuZceeLw_9OBW7fXldOG05HEgkeK3N-DBZZZyilodmjA1JWZHbgI3IU7Rmz5IPGyi-sDxHN3KlOr1BDZlLZpXPdFPwEyb6idq-z8AL-blKTSMtNI3_fz3oNBisfrHGUv5tXHoQT4B7FYcvdrap16gTOO7_wNt1zmgLJiUHvyxZgsgBchm_AhohVL-AYgcfCbCR0v7d2hgI4ag35pnZNeujDiBLfnCFcVMlqQGq8UEVZrmU9a8y4pVAGih_EImmghqmSrkxLPYZ800-vIWX-lw",
              "token_type": "Bearer",
              "expires_in": 300
          }

    access_token値は、次の形式で API Authorization呼び出しでヘッダーに渡す必要があるものです。

          Authorization: Bearer {access_token}

    ザ・expired_in valueは、アクセストークンが有効な秒数です。

    詳細とサンプルコードについては、を参照してください。アクセストークンの取得