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í:
Para implementar este escenario, haría lo siguiente:
-
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.
-
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
yclient_secret
se pasan como elusername: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 laBuffer.toString("base64")
método). CURL realiza la codificación BASE64 automáticamente, por lo que puede pasar las credenciales comouser {client_id}:{client_secret}
. También debe incluir unContent-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 elContent-type
esx-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álidoclient_id
yclient_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); });
-
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 nuevaaccess_token
para cada llamada a la API, también querrá capturar laexpires_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. Laexpires_in
el valor está en segundos. -
Una vez que tengas la
access_token
, puede llamar a la API de Brightcove, incluido el token en elAuthorization
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:
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í:
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í:
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