Introduction
Par défaut, les SDK natifs communiquent avec l'API de lecture Brightcove pour récupérer le contenu de votre vidéo et de votre liste de lecture. Un nouveau système de gestion des droits et restrictions de lecture se trouve devant l'API de lecture et fournit une autorisation de lecture à l'aide de licences DRM.
Vous pouvez utiliser les droits de lecture avec ou sans DRM, mais si vous choisissez d'utiliser des restrictions d'exécution, vous devrez utiliser un jeton Web JSON (JWT).
License Keys Protection offre un niveau de sécurité supplémentaire lors de l'utilisation de Dynamic Delivery avec un contenu protégé par DRM ou HTTP Live Streaming Encryption (HLSe). Les demandes de licence peuvent être authentifiées à l'aide d'un jeton Web JSON (JWT) signé.
Le JWT est utilisé pour demander la licence vidéo, une fois que la vidéo a été chargée dans le lecteur et que la source a été sélectionnée.
Pour plus d'informations sur cette fonctionnalité, consultez les rubriques suivantes :
Exigences
Pour utiliser les restrictions de lecture, vous devez disposer des versions suivantes des SDK natifs Brightcove :
- Androïde: SDK natif pour Android version 6.11.0 ou ultérieure
- iOS: SDK natif pour iOS version 6.7.0 ou ultérieure
Additions
Les fonctionnalités supplémentaires liées à l'utilisation des restrictions de lecture incluent :
- Androïde: Le SDK natif pour iOS version 7.1.3 a corrigé la prise en charge de la protection des clés de licence Live HLSe
- iOS: Le SDK natif pour iOS version 6.10.5 a ajouté la prise en charge de la protection des clés de licence Live HLSe
Comment fonctionne-t-il ?
Les restrictions de lecture font référence à l'ensemble de la solution, qui inclut :
- Droits de lecture
- Protection des clés de licence
Droits de lecture
Par défaut, les SDK natifs adressent une demande à l'API de lecture si celle-ci dispose d'une clé de stratégie. Le SDK envoie la demande au point de terminaison suivant et récupère votre contenu :
edge.api.brightcove.com
Pour vérifier les droits de lecture avec votre demande d'API de lecture, vous n'inclurez pas la clé de politique. En l'absence de clé de stratégie, le SDK envoie la demande à ce point de terminaison :
edge-auth.api.brightcove.com
Si toutes les vérifications associées aux droits de lecture sont positives, votre contenu est renvoyé.
Protection des clés de licence
La protection de contenu DRM ou HLSe utilise des demandes de licence/clé, qui peuvent protéger chaque demande de flux, avec l'utilisation d'un jeton Web JSON (JWT).
Vos demandes à l'API Playback incluront la clé de politique, et les SDK enverront la demande au point de terminaison suivant :
edge.api.brightcove.com
Androïde : Utilisation des droits de lecture
Pour effectuer des demandes d'API de lecture qui vérifient les droits de lecture, procédez comme suit :
-
Commencez par le Exemple d'application de base.
-
Utilisez le modèle de construction de catalogue sans la clé de stratégie.
Catalog catalog = new Catalog.Builder(eventEmitter, account).build();
Si vous suivez l'exemple d'application Brightcove, il obtient l'ID de compte comme indiqué ici :
String account = getString(R.string.account);
-
Facultatif: Si vous souhaitez utiliser des restrictions d'exécution, vous devez créer un JWT et le transmettre avec la demande de catalogue.
- Créez votre JWT. Pour plus de détails, consultez la présentation : Document sur les restrictions de lecture Brightcove.
- Transmettez votre JWT à la demande de catalogue en définissant le JWT dans le
HttpRequestConfig
. Pour plus de détails, consultez le site Android : Utilisation de la section Protection des clés de licence.
Androïde : Utilisation de la protection des clés de licence
Le SDK natif pour Android prend actuellement en charge la protection par clé/licence pour les sources HLSe et Widevine DASH. Vous fournirez votre jeton d'autorisation dans le cadre de la demande de catalogue Brightcove pour une seule vidéo ou une liste de lecture.
Pour faire une demande de catalogue Brightcove, procédez comme suit :
-
Créez un
HttpRequestConfig
objet et définissez le jeton d'autorisation Brightcove sur la valeur de votre jeton Web JSON.HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder() .setBrightcoveAuthorizationToken("your jwt") .build();
-
Utilisez l'une des méthodes de catalogue suivantes avec votre
HttpRequestConfig
objet :Pour une demande de vidéo, utilisez l'un des éléments suivants :
findVideoByID(String, HttpRequestConfig, VideoListener)
findVideoByReferenceID(String, HttpRequestConfig, VideoListener)
Pour une demande de playlist, utilisez l'un des éléments suivants :
findPlaylistByID(String, HttpRequestConfig, PlaylistListener)
findPlaylistByReferenceID(String, HttpRequestConfig, PlaylistListener)
Les détails de l'utilisation des jetons pour l'acquisition de licences HLSe et Widevine sont gérés par le SDK.
Exemple de code
Voici un exemple qui montre comment transmettre votre jeton d'autorisation lors d'une demande de catalogue :
String myToken = "your jwt";
HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
.setBrightcoveAuthorizationToken(myToken)
.build();
...
Catalog catalog = new Catalog.Builder(eventEmitter, account)
.setPolicy(getString(R.string.policy))
.build();
catalog.findVideoByReferenceID(videoReferenceId, httpRequestConfig, new VideoListener(){...});
Lecture hors ligne
Le OfflineCatalog findVideo
requestPurchaseLicense
et les requestRentalLicense
méthodes prennent tous un argument. HttpRequestConfig
Voici un exemple :
private HttpRequestConfig httpRequestConfig;
private String myToken = "your jwt";
...
HttpRequestConfig.Builder httpRequestConfigBuilder = new HttpRequestConfig.Builder();
httpRequestConfigBuilder.setBrightcoveAuthorizationToken(myToken);
httpRequestConfig = httpRequestConfigBuilder.build();
playlist.findPlaylist(catalog, httpRequestConfig, new PlaylistListener() {
@Override
public void onPlaylist(Playlist playlist) {
videoListAdapter.setVideoList(playlist.getVideos());
onVideoListUpdated(false);
brightcoveVideoView.addAll(playlist.getVideos());
}
@Override
public void onError(String error) {
String message = showToast("Failed to find playlist[%s]: %s", playlist.displayName, error);
Log.w(TAG, message);
onVideoListUpdated(true);
}
});
Pour plus de détails, consultez le Exemple d'application de lecture hors ligne.
Protection des clés de licence par des règles de livraison
Pour combiner la protection des clés de licence avec les règles de remise, configurez le HttpRequestConfig.Builder
comme suit :
- Définir la clé d'autorisation Brightcove (JWT)
- Définir l'ID de configuration de la règle de livraison
La configuration du Builder qui en résulterait ressemblerait à ceci :
HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
.addQueryParameter(HttpRequestConfig.KEY_DELIVERY_RULE_CONFIG_ID, "your rules id")
.setBrightcoveAuthorizationToken("your jwt")
.build();
Réponses
Les réponses suivantes sont associées à la protection des clés de licence :
- 200 - La licence est autorisée à continuer
- 401 - La délivrance de la licence ne doit pas être autorisée à continuer
iOS : Utilisation des droits de lecture
Pour effectuer des demandes d'API de lecture qui vérifient les droits de lecture, procédez comme suit :
-
Commencez par le Exemple d'application de base.
-
Créez une instance de
BCOVPlaybackService
, en définissant la clé de stratégie surnil
.let playbackService = BCOVPlaybackService(accountId: kViewControllerAccountID, policyKey: nil)
-
Facultatif: Si vous souhaitez utiliser des restrictions d'exécution, vous devez créer un JWT et le transmettre avec la demande de catalogue.
- Créez votre JWT. Pour plus de détails, consultez la présentation : Document sur les restrictions de lecture Brightcove.
- Transmettez votre JWT à la demande de catalogue. Pour plus de détails, consultez iOS : Utilisation de la section Protection des clés de licence.
iOS : Utilisation de la protection des clés de licence
Lorsque vous utilisez la protection des clés de licence, vous devez utiliser les méthodes du service de lecture qui vous permettent de transmettre votre jeton Web JSON (JWT). Cela se fait à l'aide du authToken
paramètre.
Pour une demande de vidéo, utilisez l'un des éléments suivants :
- (void)findVideoWithVideoID:(NSString *)videoID authToken:(NSString *)authToken parameters:(NSDictionary *)parameters completion:(void (^)(BCOVVideo *video, NSDictionary *jsonResponse, NSError *error))completionHandler;
- (void)findVideoWithReferenceID:(NSString *)referenceID authToken:(NSString *)authToken parameters:(NSDictionary *)parameters completion:(void (^)(BCOVVideo *video, NSDictionary *jsonResponse, NSError *error))completionHandler;
Pour une demande de playlist, utilisez l'un des éléments suivants :
- (void)findPlaylistWithPlaylistID:(NSString *)playlistID authToken:(NSString *)authToken parameters:(NSDictionary *)parameters completion:(void (^)(BCOVPlaylist *playlist, NSDictionary *jsonResponse, NSError *error))completionHandler;
- (void)findPlaylistWithReferenceID:(NSString *)referenceID authToken:(NSString *)authToken parameters:(NSDictionary *)parameters completion:(void (^)(BCOVPlaylist *playlist, NSDictionary *jsonResponse, NSError *error))completionHandler;
Les détails de l'utilisation des jetons pour l'acquisition de licences HLSe et FairPlay sont gérés par le SDK.
Pour plus de détails, consultez le Service d'autorisation de lecture section de référence du Kit de développement logiciel natif pour iOS.
Lecture hors ligne
Si vous utilisez le service d'autorisation de lecture avec lecture hors ligne, il existe une nouvelle méthode pour renouveler une licence FairPlay qui accepte un jeton d'autorisation :
// Request license renewal
[BCOVOfflineVideoManager.sharedManager renewFairPlayLicense:offlineVideoToken
video:video // recent video from Playback API or Playback Service class
authToken: authToken
Parameters: parameters
completion:^(BCOVOfflineVideoToken offlineVideoToken, NSError *error)
{
// handle errors
}];
Lorsque le renouvellement de la licence est terminé, le bloc d'achèvement sera appelé avec le même jeton vidéo hors ligne qui a été transmis. Un NSError
indiquera tout problème survenu (ou nul s'il n'y a pas d'erreur).
Pour plus de détails, consultez le Renouveler une licence FairPlay section de référence du Kit de développement logiciel natif pour iOS.
Protection des clés de licence par des règles de livraison
Pour combiner la protection des clés de licence avec les règles de remise, procédez comme suit :
- Définissez le paramètre de votre ID de règles de livraison
- Transmettre l'ID des règles de livraison en tant que paramètre lors de l'appel du catalogue à l'API de lecture
- Transmettez votre jeton Web JSON (JWT) à l'aide du
authToken
paramètre
Voici un exemple de code :
- (void)requestContentFromPlaybackService
{
NSDictionary *playbackAPIParameters = @{@"config_id":@"your rules id"};
[self.playbackService findVideoWithVideoID:kViewControllerVideoID
authToken:(NSString *)authToken
parameters:playbackAPIParameters
completion:^(BCOVVideo *video, NSDictionary *jsonResponse, NSError *error) {
if (video)
{
[self.playbackController setVideos:@[ video ]];
}
else
{
NSLog(@"ViewController Debug - Error retrieving video playlist: `%@`", error);
}
}];
}
Réponses
Les réponses suivantes sont associées à la protection des clés de licence :
- 200 - La licence est autorisée à continuer
- 401 - La délivrance de la licence ne doit pas être autorisée à continuer