Vue d’ensemble du modèle de licence Widevine avec Media Services v3
Azure Media Services vous permet de chiffrer votre contenu avec Google Widevine. Media Services fournit également un service de remise de licences Widevine. Vous pouvez utiliser les API Azure Media Services pour configurer des licences Widevine. Quand un lecteur tente de lire votre contenu protégé par Widevine, une demande est envoyée au service de remise de licence pour obtenir la licence. Si le service de licence approuve la demande, le service émet la licence. Elle est envoyée au client et utilisée pour déchiffrer et lire le contenu spécifié.
Notes
Widevine n’est pas disponible dans la région GovCloud.
Une demande de licence Widevine se présente sous forme de message JSON.
{
"payload":"<license challenge>",
"content_id": "<content id>"
"provider": "<provider>"
"allowed_track_types":"<types>",
"content_key_specs":[
{
"track_type":"<track type 1>"
},
{
"track_type":"<track type 2>"
},
…
],
"policy_overrides":{
"can_play":<can play>,
"can persist":<can persist>,
"can_renew":<can renew>,
"rental_duration_seconds":<rental duration>,
"playback_duration_seconds":<playback duration>,
"license_duration_seconds":<license duration>,
"renewal_recovery_duration_seconds":<renewal recovery duration>,
"renewal_server_url":"<renewal server url>",
"renewal_delay_seconds":<renewal delay>,
"renewal_retry_interval_seconds":<renewal retry interval>,
"renew_with_usage":<renew with usage>
}
}
Notes
Vous pouvez créer un message vide sans valeur, simplement « {} ». Dans ce cas, un modèle de licence est créé avec les valeurs par défaut. Les valeurs par défaut fonctionnent pour la plupart des cas. Les scénarios de remise de licence Microsoft doivent toujours utiliser les valeurs par défaut. Si vous devez définir les valeurs « provider » et « content_id », un fournisseur doit correspondre aux informations d’identification Widevine.
Message JSON
Nom | Valeur | Description |
---|---|---|
payload | Chaîne codée en Base64 | La demande de licence envoyée par un client. |
content_id | Chaîne codée en Base64 | Identificateur utilisé afin de dériver l’ID de clé et la clé de contenu pour chaque content_key_specs.track_type. |
provider | string | Utilisé pour rechercher les stratégies et les clés de contenu. Si la remise de clé Microsoft est utilisée pour la remise de licence Widevine, ce paramètre est ignoré. |
policy_name | string | Nom d'une stratégie précédemment enregistrée. facultatif. |
allowed_track_types | enum | SD_ONLY ou SD_HD. Contrôle les clés de contenu incluses dans une licence. |
content_key_specs | Tableau de structures JSON (voir la section « Spécifications de clé de contenu »). | Un contrôle plus fin sur les clés de contenu à retourner. Pour plus d’informations, consultez la section « Spécifications de clé de contenu ». Une seule valeur allowed_track_types et content_key_specs peut être spécifiée. |
use_policy_overrides_exclusively | Booléen, true ou false | Utiliser les attributs de la stratégie spécifiés par policy_overrides, et ignorer toutes les stratégies stockées précédemment. |
policy_overrides | Structure JSON (voir la section « Remplacements de stratégies »). | Paramètres de stratégie pour cette licence. Si cette ressource comporte une stratégie prédéfinie, les valeurs spécifiées sont utilisées. |
session_init | Structure JSON (voir « Initialisation de la session »). | Des données facultatives sont passées à la licence. |
parse_only | Booléen, true ou false | La demande de licence est analysée, mais aucune licence n’est émise. Toutefois, les valeurs de la demande de licence sont retournées dans la réponse. |
Spécifications de clé de contenu
En présence d’une stratégie préexistante, il est inutile de spécifier des valeurs dans la spécification de clé de contenu. La stratégie préexistante associée à ce contenu est utilisée pour déterminer la protection de sortie, telle que HDCP (High-bandwidth Digital Content Protection) et CGMS (Copy General Management System). Si aucune stratégie préexistante n’est inscrite auprès du serveur de licences Widevine, le fournisseur de contenu peut injecter les valeurs dans la demande de licence.
Chaque valeur content_key_specs doit être spécifiée pour toutes les pistes, quelle que soit l’option use_policy_overrides_exclusively.
Nom | Valeur | Description |
---|---|---|
content_key_specs. track_type | string | Un nom de type de piste. Si la valeur content_key_specs est spécifiée dans la demande de licence, assurez-vous de spécifier tous les types de pistes de façon explicite. Dans le cas contraire, vous serez confronté à un échec de lecture des 10 dernières secondes. |
content_key_specs security_level |
uint32 | Définit la configuration requise de robustesse du client pour la lecture. - Chiffrement whitebox logiciel requis. - Chiffrement logiciel et décodeur masqué requis. - Le matériel de clé et les opérations de chiffrement doivent être effectués dans un environnement d’exécution approuvé soutenu par le matériel. - Le chiffrement et le décodage du contenu doivent être effectués dans un environnement d’exécution approuvé soutenu par le matériel. - Le chiffrement, le décodage et le traitement du support (compressé et décompressé) doivent être gérés dans un environnement d’exécution approuvé soutenu par le matériel. |
content_key_specs required_output_protection.hdc |
string : HDCP_NONE, HDCP_V1 ou HDCP_V2 | Indique si HDCP est obligatoire. |
content_key_specs key |
Chaîne encodée Base64 |
Clé de contenu à utiliser pour cette piste. Si spécifié, track_type ou key_id est requis. Le fournisseur de contenu peut utiliser cette option pour injecter la clé de contenu de cette piste, au lieu de laisser le serveur de licences Widevine générer ou rechercher une clé. |
content_key_specs.key_id | Chaîne binaire codée en Base64, 16 octets | Identificateur unique pour la clé. |
Remplacements de stratégies
Nom | Valeur | Description |
---|---|---|
policy_overrides.can_play | Booléen, true ou false | Indique que la lecture du contenu est autorisée. La valeur par défaut est false. |
policy_overrides.can_persist | Booléen, true ou false | Indique que la licence peut être rendue persistante dans le stockage non volatile pour une utilisation hors connexion. La valeur par défaut est false. |
policy_overrides.can_renew | Booléen, true ou false | Indique que le renouvellement de cette licence est autorisé. Si la valeur est true, la durée de la licence peut être étendue par pulsation. La valeur par défaut est false. |
policy_overrides.license_duration_seconds | int64 | Indique la fenêtre de temps pour cette licence spécifique. La valeur 0 indique qu'il n'existe aucune limite de durée. La valeur par défaut est 0. |
policy_overrides.rental_duration_seconds | int64 | Indique la fenêtre de temps où la lecture est autorisée. La valeur 0 indique qu'il n'existe aucune limite de durée. La valeur par défaut est 0. |
policy_overrides.playback_duration_seconds | int64 | Fenêtre d’affichage du temps une fois la lecture démarrée dans la durée de la licence. La valeur 0 indique qu'il n'existe aucune limite de durée. La valeur par défaut est 0. |
policy_overrides.renewal_server_url | string | Toutes les demandes de pulsation (renouvellement) de cette licence sont dirigées vers l’URL spécifiée. Ce champ est utilisé uniquement si can_renew a la valeur true. |
policy_overrides.renewal_delay_seconds | int64 | Nombre de secondes après license_start_time avant la première tentative de renouvellement. Ce champ est utilisé uniquement si can_renew a la valeur true. La valeur par défaut est 0. |
policy_overrides.renewal_retry_interval_seconds | int64 | Spécifie le délai en secondes entre les demandes de renouvellement de licence suivantes, en cas d'échec. Ce champ est utilisé uniquement si can_renew a la valeur true. |
policy_overrides.renewal_recovery_duration_seconds | int64 | La fenêtre de temps pendant laquelle la lecture peut se poursuivre pendant la tentative de renouvellement, malgré l’échec en raison de problèmes de backend avec le serveur de licences. La valeur 0 indique qu'il n'existe aucune limite de durée. Ce champ est utilisé uniquement si can_renew a la valeur true. |
policy_overrides.renew_with_usage | Booléen, true ou false | Indique que la licence est envoyée pour renouvellement quand l’utilisation commence. Ce champ est utilisé uniquement si can_renew a la valeur true. |
Initialisation de la session
Nom | Valeur | Description |
---|---|---|
provider_session_token | Chaîne codée en Base64 | Ce jeton de session est repassé dans la licence et existe dans les renouvellements suivants. Le jeton de session n’est pas persistant au-delà des sessions. |
provider_client_token | Chaîne codée en Base64 | Jeton client à renvoyer dans la réponse de la licence. Si la demande de licence contient un jeton client, cette valeur est ignorée. Le jeton client persiste au-delà des sessions de la licence. |
override_provider_client_token | Booléen, true ou false | Si la valeur est false et si la demande de licence contient un jeton client, utilisez le jeton de la demande même si un jeton client a été spécifié dans cette structure. Si la valeur est true, utilisez toujours le jeton spécifié dans cette structure. |
Remarques supplémentaires
- Widevine est un service fourni par Google Inc. soumis aux conditions de service et à la politique de confidentialité de Google, Inc.
Obtenir de l’aide et du support
Vous pouvez contacter Media Services pour toute question ou suivre nos mises à jour selon l’une des méthodes suivantes :
- Q & R
-
Stack Overflow. Étiquetez les questions avec
azure-media-services
. - @MSFTAzureMedia ou utiliser @AzureSupport pour demander de l’aide.
- Ouvrez un ticket de support via le Portail Azure.