Authentification pour les demandes d'API

Cette rubrique couvre l'authentification pour la demande aux API REST de Brightcove.

Introduction

La plupart des API REST de Brightcove utilisent OAuth2 comme base d'authentification, et nous examinerons plus en détail la mise en œuvre d'OAuth dans les sections qui suivent.

Cependant, notez tout d'abord que deux API utilisent des approches différentes pour l'authentification :

Authentification par clé de stratégie : API de lecture

L'API de lecture utilisée principalement pour extraire des données vidéo et playlist à partir de lecteurs ou de portails Web, utilise un policy_key, pour l'authentification, généralement transmis comme argument dans un Accept en-tête :

        Accept: application/json;pk={policy_key}

Les clés de stratégie sont générées automatiquement pour les lecteurs Brightcove et peuvent provenir d'un configuration du lecteur , ou généré à l'aide de API de politique

Authentification par clé API : API en direct

Les API en direct utilise une clé API qui est fournie lorsque votre compte est configuré pour authentifier les demandes. La clé d'API est transmise dans un X-API-KEY en-tête :

        X-API-KEY : {YOUR_APIKey}

Authentification OAuth2

Les autres API REST pour Video Cloud utilisent OAuth2 pour l'authentification. Pour ceux qui connaissent OAuth2, nous utilisons un flux d'informations d'identification client. Deux opérations sont impliquées :

  1. Obtenez les informations d'identification du client : il s'agit d'une opération ponctuelle qui s'effectue le plus facilement à l'aide du Authentification API page des outils d'administration dans Studio. Voir Gestion des informations d'authentification API pour plus de détails et des instructions étape par étape.
  2. Obtenir un jeton d'accès : chaque demande d'API doit contenir un jeton d'accès envoyé dans un Authorization en-tête :
            Authorization: Bearer {access_token}

    Les jetons d'accès vivent pendant cinq minutes, donc à moins que vous n'exécutiez un processus qui générera des demandes d'API répétées, vous voudrez probablement en obtenir un nouveau pour chaque demande.

    Les jetons d'accès sont obtenus en envoyant les informations d'identification du client dans une demande à l'API OAuth de Brightcove. Voir Obtenir des jetons d'accès pour tous les détails. Il y a aussi exemple d'application vous pouvez utiliser pour obtenir un jeton unique pour tester les appels d'API. Il y a aussi des instructions pour configurer les clients REST populaires Facteur et Insomnie.

Identifiants du client via l'API OAuth

Si vous souhaitez ou devez créer des informations d'identification client à l'aide de l'API OAuth, voici les étapes qui vous guideront pour obtenir vos informations d'identification client. Vous devrez d'abord obtenir votre BC_TOKEN, qui est utilisé pour vous authentifier pour la demande d'informations d'identification client.

Obtenir votre BC_TOKEN et numéro de compte

Vous devrez vous connecter à Studio pour obtenir votre BC_TOKEN.

  1. Connectez-vous à Studio comme vous le faites normalement.
  2. Vous avez besoin de votre numéro de compte (appelé ID éditeur dans Studio), que vous pouvez obtenir en accédant aux informations de votre compte dans Studio :
    ID de compte
    ID de compte
  3. Avec n'importe quelle page de Studio ouverte, ouvrez les outils de développement pour le navigateur, accédez à la console et collez le code suivant :
    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);

    ...et appuyez sur retour.

  4. Vous devriez voir apparaître une invite contenant les informations BC_TOKENsuivantes :
    BC_TOKEN
    BC_TOKEN
  5. Si vous avez votre BC_TOKEN, passez à la Obtenir les informations d'identification du client section; si pour une raison quelconque vous n'avez pas obtenu votre BC_TOKEN en suivant les étapes précédentes, allez simplement dans la console, tapez document.cookie , et appuyez sur retour.
  6. Tous les cookies de la page seront renvoyés dans une liste séparée par des points-virgules. Recherchez le cookie BC_TOKEN dans la liste et copiez la valeur :
    Obtenez BC_TOKEN à partir de la console
    Obtenez BC_TOKEN à partir de la console

Avoir client_credentials

Nous sommes maintenant prêts à appeler le service OAuth pour récupérer les informations d'identification du client. Nous devons spécifier le nom de l'application cliente pour laquelle nous demandons des informations d'identification (le nom est arbitraire, destiné à vous aider à savoir à quoi servent les informations d'identification) et ici, nous utiliserons simplement « ingest-profiles-api-client ». Nous devons également spécifier la portée des opérations auxquelles nous voulons accéder dans un tableau, et nous utiliserons ici. Les opérations disponibles sont indiquées dans Opérations d'API pour les demandes d'informations d'identification client. Dans les étapes ci-dessous, vous spécifierez les opérations requises pour l'API Ingest Profiles.

  1. Modifiez la commande curl suivante, puis collez-la dans la ligne de commande et appuyez sur Revenir. Vous devez fournir vos valeurs spécifiques pour les trois valeurs suivantes :
    • votre BC_TOKEN
    • votre nom d'identification
    • votre identifiant de compte
          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. La réponse devrait ressembler à ceci (formatage ajouté) :
          {
            "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. Copiez et enregistrez le client_id et client_secret, car vous en aurez besoin chaque fois que vous en aurez besoin access_token.

Jetons d'accès via l'API OAuth

Les jetons d'accès, contrairement aux informations d'identification des clients, sont de courte durée : ils expirent actuellement au bout de 5 minutes. Vous devrez en obtenir un nouveau pour chaque demande d'API. Vous pouvez, bien entendu, intégrer une logique dans une application pour vérifier le jeton d'accès le plus récent et voir s'il a expiré, mais les demandes adressées à l'API Ingest Profiles sont susceptibles d'être rares. Il n'y a donc aucune bonne raison de le faire.

En fait, l'API peut être une API que vous utiliserez assez rarement pour qu'il ne soit pas du tout utile de créer une application autour d'elle. Une alternative serait d'utiliser ce script shell que Brightcove Learning Services a construit. Il vous permet de saisir votre identifiant client et votre secret, la demande et la méthode de l'API, ainsi que toutes les données de demande. Il obtient ensuite un access_token, fait la demande d'API et produit la réponse. (Notez que le script shell utilise cURL, qui est installé nativement sur Mac MacOS et d'autres systèmes Unix/Linux, ou peut être installé sur Windows.

Pour récupérer les jetons d'accès, vous faites une demande POST à :

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

Vous devez transmettre les en-têtes suivants avec cet appel :

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

La {client_id}:{client_secret} chaîne entière doit être codée en Base64 (curl encodera automatiquement la chaîne en Base64 si vous la transmettez comme --user informations d'identification ; dans les autres langues, vous devrez gérer vous-même le codage en Base64).

Vous devez également envoyer la paire clé/valeur suivante en tant que corps de la requête ou en tant que paramètre d'URL :

      grant_type=client_credentials

La réponse ressemblera à ceci (assez imprimé ici pour plus de lisibilité) :

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

Les access_token la valeur est ce que vous devez passer dans un Authorization header avec votre appel API sous cette forme :

      Authorization: Bearer {access_token}

Les expired_in valeur est le nombre de secondes pendant lesquelles le jeton d'accès est valide.

Pour plus d'informations et un exemple de code, consultez Obtenir des jetons d'accès