assistance Contacter le support | Étatétat du système du système
Contenu de la page

    Authentification pour les requêtes 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 pour l'authentification, et nous examinerons l'implémentation OAuth plus en détail dans les sections qui suivent.

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

    Authentification clé de stratégie : API de lecture

    L' API de lecture utilisée principalement pour récupérer des données vidéo et de playlist à partir de lecteurs ou de portails Web, utilise un policy_key , pour l'authentification, généralement passé 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 joueurs Brightcove et peuvent être extraites d'une configuration de lecteur ou générées à l'aide de l' API Policy

    Authentification par clé API : API en direct

    L' API Live utilise une clé d'API fournie lorsque votre compte est configuré pour authentifier les demandes. La clé API est passée dans un X-API-KEY en-tête :

            X-API-KEY : {YOUR_APIKey}

    Auth2 Auth2

    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. Il y a deux opérations en jeu :

    1. Obtenir les informations d'identification client : il s'agit d'une opération unique qui est la plus facile à effectuer à l'aide de la page Authentification API des outils d'administration de Studio. Reportez-vous à la section 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 requêtes API répétées, vous voudrez probablement juste en obtenir un nouveau pour chaque requête.

      Les jetons d'accès sont obtenus en envoyant les informations d'identification du client dans une requête à l'API OAuth de Brightcove. Voir Obtenir des jetons d'accès pour plus de détails. Il existe également un exemple d'application que 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 populaire Postman et Insomnia.

    Informations d'identification 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 dans l'obtention de 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 du client.

    Obtenir votre BC_TOKEN 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 du 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 votre BC_TOKEN:
      BC_JETON
      BC_JETON
    5. Si vous avez votre BC_TOKEN, passez à la section Obtenir les informations d'identification du client ; si pour une raison quelconque vous n'avez pas obtenu votre BC_TOKEN en utilisant les étapes précédentes, allez simplement dans la console document.cookies , tapez et appuyez sur retour.
    6. Tous les cookies de la page seront retournés dans une liste séparée par des points-virgules. Recherchez le cookie BC_TOKEN dans la liste et copiez la valeur :
      Obtenir BC_TOKEN depuis la console
      Obtenir BC_TOKEN depuis la console

    Obtenir client_credentials

    Maintenant, nous sommes prêts à faire l'appel au service OAuth pour récupérer les informations d'identification du client. Nous devons spécifier un nom d'application client pour lequel nous demandons des informations d'identification - le nom est arbitraire, destiné à vous aider à garder une trace de ce que sont les informations d'identification - et ici nous allons simplement utiliser « ingest-profiles-api-client ». Nous devons également spécifier la portée des opérations auxquelles nous voulons accéder dans un tableau, et ici nous allons utiliser. Les opérations disponibles sont affichées dans Opérations API pour les demandes d'informations d'identification client. Dans les étapes ci-dessous, vous spécifiez les opérations requises pour l'API Ingestion des profils.

    1. Modifiez la commande curl suivante, puis collez-la dans la ligne de commande et appuyez sur Retour. 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 (mise en forme ajoutée) :
            {
              "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 , comme vous en aurez besoin à chaque fois que vous avez besoin d'obtenir un access_token.

    Accéder aux jetons via l'API OAuth

    Les jetons d'accès, contrairement aux informations d'identification client, sont de courte durée - actuellement ils expirent en 5 minutes. Vous devrez en obtenir un nouveau pour chaque requête API. Vous pouvez, bien sûr, construire une logique dans une application pour vérifier le jeton d'accès le plus récent pour voir s'il a expiré, mais les demandes à l'API Ingest Profiles sont susceptibles d'être rares et éloignées, donc il n'y a pas de raison valable de le faire.

    En fait, l'API peut être celle que vous utiliserez assez rarement pour ne pas être la peine de construire une application autour d'elle. Une alternative serait d'utiliser ce script shell que Brightcove Learning Services a construit. Il vous permet d'entrer votre identifiant client et secret, la demande et la méthode API, ainsi que toutes les données de demande. Il obtient ensuite un access_token, rend la requête API, et génère la réponse. (Notez que le script shell utilise cURL, qui est installé nativement sur Mac macOS et autres systèmes Unix/Linux, ou peut être installé sur Windows.

    Pour récupérer des jetons d'accès, vous faites une requête POST à :

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

    Vous devez passer 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 encode automatiquement la chaîne en Base64-si vous la transmettez comme --user informations d'identification ; dans d'autres langues, vous devrez gérer l'encodage Base64 vous-même).

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

          grant_type=client_credentials

    La réponse ressemblera à ceci (jolie-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
          }

    La access_token valeur est ce que vous devez passer dans un Authorization en-tête avec votre appel API sous cette forme :

          Authorization: Bearer {access_token}

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

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