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
- Flujo de dispositivos (Extensión Oauth 2.0): Televisores inteligentes y conectados
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
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