Autenticación para solicitudes de API

Este tema cubre la autenticación para la solicitud a las API REST de Brightcove.

Introducción

La mayoría de las API REST de Brightcove utilizan OAuth2 como base para la autenticación, y veremos la implementación de OAuth con más detalle en las secciones siguientes.

Primero, sin embargo, tenga en cuenta que dos API utilizan diferentes enfoques para la autenticación:

Autenticación de clave de política: API de reproducción

La API de reproducción utilizada principalmente para recuperar datos de vídeos y listas de reproducción de reproductores o portales web, utiliza un policy_key, para la autenticación, generalmente se pasa como argumento en un Accept encabezado:

        Accept: application/json;pk={policy_key}

Las claves de política se generan automáticamente para los reproductores de Brightcove y se pueden tomar de un configuración del jugador , o generado usando el API de política

Autenticación de clave API: API en vivo

La API en vivo utiliza una clave de API que se proporciona cuando su cuenta está configurada para autenticar solicitudes. La clave de API se pasa en un X-API-KEY encabezamiento:

        X-API-KEY : {YOUR_APIKey}

Autenticación OAuth2

Las otras API REST para Video Cloud usan OAuth2 para la autenticación. Para aquellos familiarizados con OAuth2, usamos un flujo de credenciales de cliente. Hay dos operaciones involucradas:

  1. Obtenga las credenciales del cliente: Esta es una operación que se realiza una sola vez y que se lleva a cabo más fácilmente Autenticación API página de las herramientas de administración en Studio. Ver Administrar las credenciales de autenticación de API para obtener detalles e instrucciones paso a paso.
  2. Obtenga un token de acceso: cada solicitud de API debe contener un token de acceso enviado en un Authorization encabezamiento:
            Authorization: Bearer {access_token}

    Los tokens de acceso están activos durante cinco minutos, por lo que, a menos que ejecute un proceso que generará solicitudes de API repetidas, probablemente solo querrá obtener una nueva para cada solicitud.

    Los tokens de acceso se obtienen enviando las credenciales del cliente en una solicitud a la API OAuth de Brightcove. Ver Obtener tokens de acceso para conocer todos los detalles. También hay una aplicación de muestra que puede utilizar para obtener un token único para probar las llamadas a la API. También hay instrucciones para configurar los clientes REST más populares. Cartero y Insomnio.

Credenciales de cliente a través de la API de OAuth

Si desea o necesita crear credenciales de cliente utilizando la API de OAuth, a continuación se muestran los pasos que lo guiarán para obtener sus credenciales de cliente. Primero deberá obtener su BC_TOKEN, que se utiliza para autenticarlo para la solicitud de credenciales del cliente.

Conseguir su BC_TOKEN y número de cuenta

Deberá iniciar sesión en Studio para obtener su BC_TOKEN.

  1. Inicie sesión en Studio como lo hace normalmente.
  2. Necesita su número de cuenta (denominado ID de editor en Studio), que puede obtener yendo a la información de su cuenta en Studio:
    ID de la cuenta
    ID de la cuenta
  3. Con cualquier página de Studio abierta, abra las herramientas de desarrollo para el navegador, vaya a la Consola y pegue el siguiente código:
    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);

    ... y presione regresar.

  4. Debería ver aparecer un mensaje que contiene su BC_TOKEN:
    BC_TOKEN
    BC_TOKEN
  5. Si tiene su BC_TOKEN, vaya a la Obtenga las credenciales del cliente sección; Si por alguna razón no obtuvo su BC_TOKEN siguiendo los pasos anteriores, simplemente vaya a la Consola, escriba document.cookie y presione regresar.
  6. Todas las cookies de la página se devolverán en una lista separada por punto y coma. Busque la cookie BC_TOKEN en la lista y copie el valor:
    Obtener BC_TOKEN desde la consola
    Obtener BC_TOKEN desde la consola

Obtener client_credentials

Ahora estamos listos para realizar la llamada al servicio OAuth para recuperar las credenciales del cliente. Tenemos que especificar un nombre de aplicación cliente para el que estamos solicitando credenciales (el nombre es arbitrario, con la intención de ayudarlo a realizar un seguimiento de para qué son las credenciales) y aquí usaremos "ingest-profiles-api-client". También tenemos que especificar el alcance de las operaciones a las que queremos acceder en una matriz, y aquí usaremos. Las operaciones disponibles se muestran en Operaciones de API para solicitudes de credenciales de cliente. En los pasos siguientes, especificará las operaciones necesarias para la API de perfiles de ingesta.

  1. Edite el siguiente comando curl, luego péguelo en la línea de comando y presione Regreso. Debe proporcionar sus valores específicos para los siguientes tres valores:
    • tu BC_TOKEN
    • su nombre de credencial
    • su identificación de cuenta
          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 respuesta debería verse así (formato agregado):
          {
            "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. Copie y guarde el client_id y client_secret , ya que los necesitará cada vez que necesite obtener un access_token.

Tokens de acceso a través de la API de OAuth

Los tokens de acceso, a diferencia de las credenciales de cliente, son de corta duración; actualmente caducan en 5 minutos. Deberá obtener uno nuevo para cada solicitud de API. Por supuesto, podría crear una lógica en una aplicación para verificar el token de acceso más reciente y ver si se agotó el tiempo de espera, pero es probable que las solicitudes a la API Ingest Profiles sean pocas y distantes entre sí, por lo que no hay una buena razón para hacerlo. .

De hecho, la API puede ser una que utilice con poca frecuencia como para que no valga la pena crear una aplicación a su alrededor. Una alternativa sería utilizar este script de shell que construyó Brightcove Learning Services. Le permite ingresar su identificación y secreto de cliente, la solicitud y el método de la API, y cualquier información de solicitud. Entonces obtiene un access_token , realiza la solicitud de API y genera la respuesta. (Tenga en cuenta que el script de shell usa cURL, que se instala de forma nativa en Mac MacOS y otros sistemas Unix / Linux, o se puede instalar en Windows.

Para recuperar tokens de acceso, realiza una solicitud POST a:

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

Debes pasar los siguientes encabezados con esta llamada:

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

La totalidad {client_id}:{client_secret} la cadena debe estar codificada en Base64 (curl automáticamente codificará en Base64 la cadena si la pasa como --user cartas credenciales; en otros idiomas, deberá manejar la codificación Base64 usted mismo).

También debe enviar el siguiente par clave / valor como el cuerpo de la solicitud o como parámetro de URL:

      grant_type=client_credentials

La respuesta se verá así (bastante impresa aquí para facilitar la lectura):

      {
          "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 valor es lo que debe pasar en un Authorization encabezado con su llamada a la API en este formulario:

      Authorization: Bearer {access_token}

La expired_in valor es el número de segundos durante los que es válido el token de acceso.

Para obtener más información y código de muestra, consulte Obtener tokens de acceso