Authentifizierung für API-Anfragen

Dieses Thema behandelt die Authentifizierung für Anfragen an die Brightcove-REST-APIs.

Einleitung

Die meisten Brightcove-REST-APIs verwenden OAuth2 als Grundlage für die Authentifizierung, und wir werden uns die OAuth-Implementierung in den folgenden Abschnitten genauer ansehen.

Beachten Sie jedoch zunächst, dass zwei APIs unterschiedliche Ansätze zur Authentifizierung verwenden:

Richtlinienschlüssel-Authentifizierung: Wiedergabe-API

Die Wiedergabe-API, die hauptsächlich zum Abrufen von Video- und Wiedergabelistendaten von Playern oder Webportalen verwendet wird policy_key, verwendet eine zur Authentifizierung, die normalerweise als Argument in einem Accept Kopfzeile:

        Accept: application/json;pk={policy_key}

Richtlinienschlüssel werden automatisch für Brightcove-Player generiert und können aus einer Player-Konfiguration übernommen oder mithilfe der Policy-API generiert werden.

API-Schlüssel-Authentifizierung: Live-API

Die Live-API verwendet einen API-Schlüssel, der bei der Einrichtung Ihres Kontos bereitgestellt wird, um Anfragen zu authentifizieren. Der API-Schlüssel wird in einem X-API-KEY Header:

        X-API-KEY : {YOUR_APIKey}

OAuth2-Authentifizierung

Die anderen REST-APIs für Video Cloud verwenden OAuth2 zur Authentifizierung. Für diejenigen, die mit OAuth2 vertraut sind, verwenden wir einen Client-Anmeldedatenfluss. Es sind zwei Operationen beteiligt:

  1. Kundenanmeldeinformationen abrufen: Dies ist ein einmaliger Vorgang, der am einfachsten mit dem API-Authentifizierung Seite der Admin-Tools in Studio. Sehen Anmeldeinformationen für die API-Authentifizierung verwalten für Details und Schritt-für-Schritt-Anleitungen.
  2. Abrufen eines Zugriffstokens: Jede API-Anfrage muss ein Zugriffstoken enthalten, das in einem gesendet wird Authorization Header:
            Authorization: Bearer {access_token}

    Zugriffstokens leben fünf Minuten lang. Wenn Sie also keinen Prozess ausführen, der wiederholte API-Anfragen generiert, möchten Sie wahrscheinlich nur einen neuen für jede Anfrage erhalten.

    Zugriffstoken werden abgerufen, indem die Client-Anmeldeinformationen in einer Anfrage an die OAuth-API von Brightcove gesendet werden. Sehen Zugriffstoken erhalten für alle Einzelheiten. Da ist auch ein Beispiel-App Sie können ein einmaliges Token zum Testen von API-Aufrufen verwenden. Es gibt auch Anweisungen zur Konfiguration der beliebten REST-Clients Postbote und Schlaflosigkeit.

Client-Anmeldeinformationen über die OAuth-API

Wenn Sie Client-Anmeldeinformationen mit der OAuth-API erstellen möchten oder müssen, finden Sie unten die Schritte, die Sie durch das Abrufen Ihrer Client-Anmeldeinformationen führen. Sie müssen zuerst Ihren BC_TOKEN abrufen, der verwendet wird, um Sie für die Anforderung der Client-Anmeldeinformationen zu authentifizieren.

Bekomm dein BC_TOKEN und Kontonummer

Sie müssen sich bei Studio anmelden, um Ihre BC_TOKEN.

  1. Melden Sie sich wie gewohnt bei Studio an.
  2. Sie benötigen Ihre Kontonummer (in Studio als Publisher-ID bezeichnet), die Sie über Ihre Kontoinformationen in Studio erhalten:
    Konto-ID
    Konto-ID
  3. Öffnen Sie bei geöffneter Seite in Studio die Entwicklertools für den Browser, wechseln Sie zur Konsole und fügen Sie den folgenden Code ein:
    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);

    ...und drücken Sie die Eingabetaste.

  4. Es sollte eine Eingabeaufforderung erscheinen, die Folgendes enthält BC_TOKEN:
    BC_TOKEN
    BC_TOKEN
  5. Wenn Sie Ihr BC_TOKEN haben, fahren Sie mit fort Erhalten Sie Client-Anmeldeinformationen Abschnitt; Wenn Sie Ihr BC_TOKEN aus irgendeinem Grund nicht mit den vorherigen Schritten erhalten haben, gehen Sie einfach zur Konsole und geben Sie es ein document.cookie , und drücken Sie die Eingabetaste.
  6. Alle Cookies für die Seite werden in einer durch Semikolons getrennten Liste zurückgegeben. Suchen Sie das BC_TOKEN-Cookie in der Liste und kopieren Sie den Wert:
    BC_TOKEN von der Konsole abrufen
    BC_TOKEN von der Konsole abrufen

Werden client_credentials

Jetzt können wir den OAuth-Dienst aufrufen, um Client-Anmeldeinformationen abzurufen. Wir müssen einen Client-Anwendungsnamen angeben, für den wir Anmeldeinformationen anfordern - der Name ist willkürlich, soll Ihnen helfen, den Zweck der Anmeldeinformationen zu verfolgen - und hier verwenden wir einfach "ingest-profiles-api-client". Wir müssen auch den Umfang der Operationen angeben, auf die wir in einem Array zugreifen möchten, und hier werden wir verwenden. Die verfügbaren Operationen sind in API-Operationen für Client-Anmeldeinformationen-Anforderungen. In den folgenden Schritten geben Sie die Operationen an, die für die Ingest Profiles API erforderlich sind.

  1. Bearbeiten Sie den folgenden curl-Befehl, fügen Sie ihn in die Befehlszeile ein und drücken Sie Zurückkehren. Sie müssen Ihre spezifischen Werte für die folgenden drei Werte angeben:
    • dein BC_TOKEN
    • Ihr Anmeldename
    • deine Konto-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. Die Antwort sollte wie folgt aussehen (Formatierung hinzugefügt):
          {
            "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. Kopieren und speichern Sie das client_id und client_secret, da Sie diese jederzeit benötigen, wenn Sie eine benötigen access_token.

Zugriffstoken über die OAuth-API

Zugriffstoken sind im Gegensatz zu Client-Anmeldeinformationen kurzlebig – derzeit laufen sie in 5 Minuten ab. Sie müssen für jede API-Anfrage eine neue anfordern. Sie könnten natürlich Logik in eine App einbauen, um das neueste Zugriffstoken zu überprüfen, um festzustellen, ob es ein Timeout hat, aber Anfragen an die Ingest Profiles API sind wahrscheinlich selten, sodass es dafür keinen guten Grund gibt.

Tatsächlich kann es sein, dass Sie die API nur selten verwenden, sodass es sich möglicherweise nicht lohnt, eine App darauf aufzubauen. Eine Alternative wäre zu verwenden dieses Shell-Skript die von Brightcove Learning Services erstellt wurden. Sie können Ihre Client-ID und Ihr Geheimnis, die API-Anfrage und -Methode sowie alle Anfragedaten eingeben. Dann erhält es eine access_token, stellt die API-Anfrage und gibt die Antwort aus. (Beachten Sie, dass das Shell-Skript cURL verwendet, das nativ auf Mac MacOS und anderen Unix/Linux-Systemen installiert ist, oder kann unter Windows installiert werden.

Um Zugriffstoken abzurufen, stellen Sie eine POST-Anfrage an:

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

Bei diesem Aufruf müssen Sie die folgenden Header übergeben:

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

Das ganze {client_id}:{client_secret} string muss Base64-codiert sein (curl wird den String automatisch Base64-codieren, wenn Sie ihn als übergeben --user Referenzen; in anderen Sprachen müssen Sie die Base64-Kodierung selbst übernehmen).

Sie müssen außerdem das folgende Schlüssel/Wert-Paar als Anfragetext oder als URL-Parameter senden:

      grant_type=client_credentials

Die Antwort sieht wie folgt aus (hier zur besseren Lesbarkeit hübsch gedruckt):

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

Die access_token Wert ist das, was Sie in einem weitergeben müssen Authorization Header mit Ihrem API-Aufruf in dieser Form:

      Authorization: Bearer {access_token}

Die expired_in value ist die Anzahl der Sekunden, für die das Zugriffstoken gültig ist.

Weitere Informationen und Beispielcode finden Sie unter Zugriffstoken erhalten