Restrictions de lecture avec les SDK natifs

Dans cette rubrique, vous apprendrez à utiliser les restrictions de lecture avec les SDK natifs de Brightcove.

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 :

  1. Commencez par le Exemple d'application de base.

  2. 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);
  3. Facultatif: Si vous souhaitez utiliser des restrictions d'exécution, vous devez créer un JWT et le transmettre avec la demande de catalogue.

    1. Créez votre JWT. Pour plus de détails, consultez la présentation : Document sur les restrictions de lecture Brightcove.
    2. 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 :

  1. 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();
    
  2. 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 :

  1. Commencez par le Exemple d'application de base.

  2. Créez une instance de BCOVPlaybackService, en définissant la clé de stratégie sur nil.

    let playbackService = BCOVPlaybackService(accountId: kViewControllerAccountID, policyKey: nil)
  3. Facultatif: Si vous souhaitez utiliser des restrictions d'exécution, vous devez créer un JWT et le transmettre avec la demande de catalogue.

    1. Créez votre JWT. Pour plus de détails, consultez la présentation : Document sur les restrictions de lecture Brightcove.
    2. 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