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 :
- 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.
- 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
.
- Connectez-vous à Studio comme vous le faites normalement.
- 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 :
- 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.
- Vous devriez voir apparaître une invite contenant les informations
BC_TOKEN
suivantes : - 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. - 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 :
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.
- 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
- 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 }
- Copiez et enregistrez le
client_id
etclient_secret
, car vous en aurez besoin chaque fois que vous en aurez besoinaccess_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