introduction
Le service d'autorisation de lecture (PAS) de Brightcove 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).
Avec PAS, les demandes de licence seront authentifiées à l'aide d'un Jeton Web JSON (JWT).
Il est utilisé lors de la demande de licence vidéo, une fois la vidéo chargée dans le lecteur et la source sélectionnée.
Pour plus d'informations sur le PAS, consultez le Aperçu: DRM avec service d'autorisation de lecture document.
Implémentation Android
Le SDK natif pour Android prend actuellement en charge PAS 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 effectuer une demande de catalogue Brightcove à l'aide de PAS, procédez comme suit:
-
Créé un
HttpRequestConfig
objet et définissez le jeton d'autorisation Brightcove comme indiqué ici:HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder() .setBrightcoveAuthorizationToken(myToken) .build();
La valeur du jeton d'autorisation sera la valeur de votre jeton Web JSON.
-
Une fois que vous avez créé le
HttpRequestConfig
objet, vous pouvez le transmettre à l'une des méthodes Catalog suivantes: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
L'exemple suivant montre comment transmettre votre jeton d'autorisation lors d'une demande de catalogue:
String myToken = "...";
HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
.setBrightcoveAuthorizationToken(myToken)
.build();
…
Catalog catalog = new Catalog(eventEmitter, accountId, policyKey, playbackApiBaseUrl);
catalog.findVideoByReferenceID(videoReferenceId, httpRequestConfig, new VideoListener(){...});
Lecture hors ligne
Le catalogue hors ligne findVideo
, requestPurchaseLicense
et requestRentalLicense
les méthodes prennent toutes un HttpRequestConfig
comme argument.
private HttpRequestConfig httpRequestConfig;
private String pasToken = "YOUR_PAS_TOKEN";
...
HttpRequestConfig.Builder httpRequestConfigBuilder = new HttpRequestConfig.Builder();
httpRequestConfigBuilder.setBrightcoveAuthorizationToken(pasToken);
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.
Réponses
Les réponses suivantes sont associées au PAS:
- 200 - La licence est autorisée à continuer
- 401 - La délivrance de la licence ne doit pas être autorisée à se poursuivre
Limites
Il y a une limitation avec la version actuelle :
- Chromecast n'est pas pris en charge avec l'autorisation de lecture.
Implémentation iOS
Lorsque vous utilisez le service d'autorisation de lecture de Brightcove, vous devrez utiliser les méthodes du service de lecture qui vous permettent de transmettre votre jeton d'autorisation.
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.
Réponses
Les réponses suivantes sont associées au PAS:
- 200 - La licence est autorisée à continuer
- 401 - La délivrance de la licence ne doit pas être autorisée à se poursuivre