Descripción general: API de OAuth

La implementación de Brightcove de OAuth2 le permite obtener tokens de acceso para varias API de Brightcove.

Resumen

La implementación de Brightcove consta de dos partes:

  • La API de OAuth: proporciona acceso a todas las funciones de OAuth disponibles.

  • La interfaz de usuario de credenciales de OAuth: accesible a través de la interfaz de configuración de la cuenta en Studio, la interfaz de usuario proporciona una manera fácil de registrar aplicaciones que usarán las API de Brightcove y generarán una ID de cliente y un secreto de cliente para ellas. Ver Administrar las credenciales de autenticación de API para obtener instrucciones sobre el uso de la interfaz de usuario de OAuth.

También vea el Referencia de API.

Glosario de términos

OAuth

Un estándar abierto para la autorización. OAuth proporciona a las aplicaciones cliente un "acceso delegado seguro" a los recursos del servidor en nombre del propietario del recurso. OAuth esencialmente permite que un servidor de autorización emita tokens de acceso a clientes de terceros, con la aprobación del propietario del recurso. Luego, el cliente usa el token de acceso para acceder a los recursos protegidos alojados por el servidor de recursos.

alcance

Un objeto de datos que describe un conjunto de recursos (accesible a través de una API) y algunas operaciones en esos recursos (como "leer" y "escribir"). El alcance de un token de acceso limita lo que puede hacer al presentar ese token.

cliente

Una aplicación utilizada por un usuario final para acceder a un recurso a través de una API de Brightcove.

Identificación del cliente

Un identificador único para un cliente generado por el servicio OAuth.

secreto del cliente

Una cadena de bits que, utilizada con una identificación de cliente, sirve como contraseña para autenticar a un cliente.

token de acceso

Una cadena de bits que proporciona acceso temporal a una API. Los tokens de acceso son devueltos por el servicio OAuth para un cliente que lo solicite.

flujo

Secuencia de operaciones que da como resultado el acceso exitoso a un recurso protegido por OAuth.

URL base

La URL base de la API de OAuth es:

    https://oauth.brightcove.com/v4
    
    

Flujo de credenciales del cliente

En el flujo de credenciales del cliente, su aplicación solicitará un token de acceso y pasará su ID de cliente y su secreto de cliente al servicio OAuth con la solicitud. Actualmente, este es el único flujo compatible con los clientes de Brightcove.

Exactamente cómo funcionará el flujo de credenciales del cliente dependerá del escenario.

Aplicación organizativa

En este escenario, tiene una aplicación que necesita interactuar con una o más API de Brightcove, solo para la cuenta o cuentas que pertenecen a su organización. La aplicación no está vinculada a ningún usuario específico. En este caso, el flujo de trabajo se ve así:

Flujo de trabajo de credenciales de cliente para aplicaciones organizativas
Flujo de trabajo de credenciales de cliente para aplicaciones organizativas

Para implementar este escenario, haría lo siguiente:

  1. Con la interfaz de usuario de OAuth o el servicio OAuth, obtenga una identificación de cliente y un secreto para su aplicación; la interfaz de usuario le permite obtener una identificación de cliente y un secreto para una sola cuenta o varias. Esta es una operación de una sola vez.

  2. Agregue lógica a su aplicación del lado del servidor para realizar solicitudes a la API de OAuth para los tokens de acceso. La implementación dependerá del idioma de su aplicación (y le recomendamos que utilice una Biblioteca OAuth2 para su idioma si es posible), pero la llamada que hará será una solicitud POST a:

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

    La client_id y client_secret se pasan como el username:password en un encabezado de autorización básico:

        Authorization: Basic {client_id}:{client_secret}
        
        

    La totalidad {client_id}:{client_secret} La cadena debe estar codificada en Base64 (en Node.js, por ejemplo, puede usar la Buffer.toString("base64") método). CURL realiza la codificación BASE64 automáticamente, por lo que puede pasar las credenciales como user {client_id}:{client_secret}. También debe incluir un Content-Type: application/x-www-form-urlencoded encabezamiento.

    El cuerpo de la solicitud contendrá el par clave / valor grant_type=client_credentials. Tenga en cuenta que desde el Content-type es x-www-form-urlencoded , también puede agregar esto a la URL de solicitud como parámetro:

        https://oauth.brightcove.com/v4/access_token?grant_type=client_credentials

    A continuación se muestra una aplicación Node.js muy básica que obtendrá una access_token dado un válido client_id y client_secret.

        /*
        * Simple node app to get an access_token for a Brightcove API
        * You will need to substitute valid client_id and client_secret values
        * for {your_client_id} and {your_client_secret}
        */
        var request = require('request');
        var client_id = "{your_client_id}";
        var client_secret = "{your_client_secret}";
        var auth_string = new Buffer(client_id + ":" + client_secret).toString('base64');
        console.log(auth_string);
        request({
        method: 'POST',
        url: 'https://oauth.brightcove.com/v4/access_token',
        headers: {
        'Authorization': 'Basic ' + auth_string,
        'Content-Type': 'application/x-www-form-urlencoded'
        },
        body: 'grant_type=client_credentials'
        }, function (error, response, body) {
        console.log('Status: ', response.statusCode);
        console.log('Headers: ', JSON.stringify(response.headers));
        console.log('Response: ', body);
        console.log('Error: ', error);
        });
        
        
  3. El cuerpo de la respuesta tendrá el siguiente aspecto:

        {
        "access_token": "ACikM-7Mu04V5s7YBlKgTiPu4ZO3AsTBlWt-73l5kXRN4IeRuIVlJHZkq_lFQdZBYfzT9B_nHNgcmNFdalxSiNdqOBaaV7wQCCnRCua_efHNCg9d_yLbezcjxr3AGcBKy9a8_t-uTMTA46T24LKMOBGBNJFkyATSZI4JuxU71VIyGF9hDisbKHmKC5G5HdQ0nJgyCD1w1zkKrB1CpFb5iiBuA_XOzehF-Xf5DBYnSkDhzzByuFwTv9dU9d7W6V2OuiKiTzCzY3st01qJTk6-an6GcAOD4N5pdN8prvvMDQhz_HunJIamvVGqBz7o3Ltw8CFFJMXKQdeOF8LX31BDnOvMBEz-xvuWErurvrA0r6x5eZH8SuZqeri4ryZAsaitHiJjz9gp533o",
        "token_type": "Bearer",
        "expires_in": 300
        }
        
        

    Necesitarás capturar el access_token. A menos que sus llamadas sean intermitentes, en cuyo caso solicitará una nueva access_token para cada llamada a la API, también querrá capturar la expires_in value para que pueda usarlo para solicitudes posteriores para verificar si su token sigue siendo válido; de lo contrario, deberá solicitar uno nuevo. La expires_in el valor está en segundos.

  4. Una vez que tengas la access_token , puede llamar a la API de Brightcove, incluido el token en el Authorization encabezado en la forma:

        Authorization: Bearer {access_token}
        
        

Ver Obtener tokens de acceso para obtener más detalles y ejemplos de código.

Autorización general

Este escenario se aplica principalmente a los socios de Brightcove que crearán aplicaciones que los usuarios de Brightcove pueden utilizar en varias organizaciones. El flujo de trabajo para este escenario tiene el siguiente aspecto:

Flujo de trabajo de credenciales de cliente para la aplicación de varias organizaciones
Flujo de trabajo de credenciales de cliente para aplicaciones de varias organizaciones

La única diferencia en la implementación de este escenario en lugar del primero es que el usuario debe obtener una identificación de cliente y un secreto para su aplicación desde la interfaz de usuario de OAuth y proporcionárselos a través de un formulario. Luego, los pasará a su aplicación para enviarlos con la solicitud de un access_token. Aparte de eso, todo será igual.

Obtener credenciales de cliente

La forma más fácil de obtener credenciales de cliente (la client_id y client_secret ) es usar el Interfaz de usuario de OAuth. Sin embargo, si prefiere obtenerlos directamente del servicio OAuth, puede hacerlo mediante una solicitud POST a https://oauth.brightcove.com/v4/client_credentials , pasando los siguientes encabezados:

  • Content-Type: application/json
  • Authorization: BC_TOKEN your BC_TOKEN

También debe enviar un objeto JSON como carga útil:

    {
      "type": "credential",
      "maximum_scope": [
        {
          "identity": {
            "type": "video-cloud-account",
            "type": "perform-account",
            "account-id": account_id1
          },
          "operations": [
            "video-cloud/player/all"
          ]
        },
        {
          "identity": {
          "type": "video-cloud-account",
          "type": "perform-account",
          "account-id": account_id2
        },
        "operations": [
          "video-cloud/player/all"
        ]
        }
      ],
      "name": "AnalyticsClient",
      "description": "My analytics app"
    }
    
    

Operaciones

Lo único que variará aquí es el operations value, que dependerá de la API a la que desee acceder y de si desea acceder a operaciones de lectura, escritura o ambas. Ver Operaciones de API para solicitudes de credenciales de cliente para obtener una lista de todas las operaciones admitidas actualmente.

Para obtener guías detalladas sobre cómo obtener las credenciales del cliente mediante curl o Postman, consulte:

Trabajando con OAuth

Para construir la lógica para manejar la obtención de tokens de acceso para sus solicitudes de API, hay dos formas generales de proceder.

Si está creando una sola aplicación del lado del servidor, tiene sentido incorporar la lógica en la aplicación. La secuencia de operaciones se verá así:

Secuencia de aplicación única
Secuencia de aplicación única

Si, en cambio, va a crear varias aplicaciones que necesitarán realizar llamadas a las API de Brightcove, o si crea una aplicación web del lado del cliente, tiene más sentido consolidar el código para obtener tokens de acceso en un solo proxy. En este caso, la secuencia de operaciones se verá así:

Secuencia de proxy
Secuencia de proxy

Ver el Inicio rápido para obtener instrucciones detalladas sobre cómo crear un proxy simple.

Muestras y bibliotecas de clientes

Hemos creado implementaciones de cliente de muestra en varios idiomas para ofrecerle modelos de implementación.

También hay bibliotecas OAuth2 disponibles para varios idiomas y, por lo general, le recomendamos que utilice estas bibliotecas siempre que sea posible, en lugar de crear una interacción con la API de OAuth. A continuación se muestra una lista parcial de bibliotecas disponibles. Para obtener una lista más extensa, consulte https://oauth.net/2/

Pitón
PHP
Cacao
Cacao
iOS
iPhone y iPad
iOS y Mac MacOS
iOS y Mac MacOS
Java
Rubí
.NETO
Qt / C ++
O2