Integración con Beacon Web Store

Este tema cubre la integración de Beacon Web Store a través de OIDC (Open ID Connect).

Autenticación a través de OIDC y derechos

Autenticación

Beacon aprovecha los siguientes flujos de OAuth 2.0 para la autenticación:

  • Código de autorización con PKCE: iOS, Android y Web
    Autorización con PKCE
    Autorización con PKCE
  • Flujo de dispositivos (Extensión Oauth 2.0): Televisores inteligentes y conectados
    Flujo del dispositivo
    Flujo del dispositivo
,

Hay 3 tokens que se espera que estén disponibles para Beacon:

  • Token de acceso: valida que un usuario pudo autenticarse y se le debe otorgar acceso a Beacon ( Formato JWT y necesidad de incluir iss y sub )
  • Actualizar token: permite al usuario permanecer conectado después de que expire el token de acceso al proporcionar un mecanismo para obtener automáticamente un nuevo token de acceso en nombre del usuario (siempre que el usuario tenga acceso). esto es especialmente importante en televisores
  • Token de identidad: estandariza la forma en que obtenemos información sobre los usuarios

Deben apoyarse los siguientes tipos de subvenciones:

  • authorization_code
  • refresh_token
  • urn:ietf:params:oauth:grant-type:device_code

Los siguientes puntos finales del proveedor de autenticación deberán configurarse en Beacon (el cliente debe proporcionarnos estos para que podamos configurar, si Descubrimiento de OpenID Connect está disponible podemos descubrir estos):

  • Token de acceso (JWT)
  • Token de actualización (JWT)
  • Información de usuario
  • Token de revocación (JWT)
  • Autorizar
  • Códigos de emparejamiento
  • JWKS
  • Cerrar sesión
  • Descubrimiento de OpenID Connect (/.well-known/openid-configuration): se utiliza para la configuración del sistema

Ejemplos de elementos configurados en Beacon CMS

Configuración de ejemplo
Configuración de ejemplo

Derechos

En términos de informar a Beacon sobre los derechos de los usuarios, Beacon proporciona la siguiente API: https://beacon.brightcove.com/{instance}/webhook/beacon(Clave API proporcionada por Brightcove)

La carga útil será JSON:

[
  {
    "package_name": "string",			// Commerce package for SVOD or SKU for TVOD purchases - required
    "external_user_id": "string",			// User identifier (username or email depending on configuration of users)- required
    "transaction_id": "string",			// Unique transaction id for purchase - required for subscriptions (this will be used in renewal)
    "start_date": "string",				// Start date for entitlements 
    "end_date": "string",				// End date for entitlements (applicable if a rent or a subscription)
    "trial_end_date": "string",			// End date for a trial if applicable
    "effective_cancellation_date": "string",		// Date by when cancellation is effective (for example, end of current subscription period)
    "notification_type": "new",			// One of: new, renew, cancellation, buy or rent - required
    “payment_gateway”: “beaconstore”      // One of: “beaconstore”
  }
]

Cuando se utiliza un sistema de autenticación externo, external_user_id corresponde al valor del sujeto en el token de acceso

Ejemplo de llamada de Postman al webhook de derechos:

Ejemplo de llamada al cartero
Ejemplo de llamada al cartero