Einführung
Der Playback Authorization Service (PAS) von Brightcove bietet ein zusätzliches Maß an Sicherheit, wenn Dynamic Delivery mit DRM-geschützten oder HTTP Live Streaming Encryption (HLSe)-Inhalten verwendet wird.
Mit PAS werden Lizenzanfragen mit einem signierten . authentifiziert JSON-Webtoken (JWT).
Es wird bei der Anforderung der Videolizenz verwendet, nachdem das Video auf den Player geladen und die Quelle ausgewählt wurde.
Weitere Informationen zu PAS finden Sie im Überblick: DRM mit Playback Authorization Service dokumentieren.
Android-Implementierung
Das Native SDK für Android unterstützt derzeit PAS für HLSe- und Widevine DASH-Quellen. Sie geben Ihr Autorisierungstoken als Teil der Brightcove-Kataloganforderung für ein einzelnes Video oder eine Playlist an.
Gehen Sie folgendermaßen vor, um eine Brightcove-Kataloganforderung mit PAS zu erstellen:
-
Erstelle ein
HttpRequestConfig
-Objekt und legen Sie das Brightcove-Autorisierungstoken wie hier gezeigt fest:HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder() .setBrightcoveAuthorizationToken(myToken) .build();
Der Wert des Autorisierungs-Tokens ist der Wert Ihres JSON-Web-Tokens.
-
Nachdem Sie die erstellt haben
HttpRequestConfig
-Objekt können Sie dieses an eine der folgenden Catalog-Methoden übergeben:Verwenden Sie für eine Videoanfrage eine der folgenden Möglichkeiten:
findVideoByID(String, HttpRequestConfig, VideoListener)
findVideoByReferenceID(String, HttpRequestConfig, VideoListener)
Verwenden Sie für eine Playlist-Anfrage eine der folgenden Möglichkeiten:
findPlaylistByID(String, HttpRequestConfig, PlaylistListener)
findPlaylistByReferenceID(String, HttpRequestConfig, PlaylistListener)
Die Details der Token-Nutzung für den Erwerb von HLSe- und Widevine-Lizenzen werden vom SDK gehandhabt.
Codebeispiel
Das folgende Beispiel zeigt, wie Sie Ihr Autorisierungstoken bei einer Kataloganforderung übergeben:
String myToken = "...";
HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
.setBrightcoveAuthorizationToken(myToken)
.build();
…
Catalog catalog = new Catalog(eventEmitter, accountId, policyKey, playbackApiBaseUrl);
catalog.findVideoByReferenceID(videoReferenceId, httpRequestConfig, new VideoListener(){...});
Offline-Wiedergabe
Der OfflineKatalog findVideo
, requestPurchaseLicense
und requestRentalLicense
Methoden nehmen alle eine HttpRequestConfig
als 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);
}
});
Einzelheiten finden Sie im Beispiel-App für die Offline-Wiedergabe.
Antworten
Die folgenden Antworten sind mit PAS verbunden:
- 200 - Lizenz darf fortgesetzt werden
- 401 - Die Lizenzlieferung darf nicht fortgesetzt werden
Einschränkungen
Bei der aktuellen Version gibt es eine Einschränkung:
- Chromecast wird mit der Wiedergabeautorisierung nicht unterstützt.
iOS-Implementierung
Wenn Sie den Wiedergabeautorisierungsdienst von Brightcove verwenden, müssen Sie die Wiedergabedienstmethoden verwenden, mit denen Sie Ihr Autorisierungstoken übergeben können.
Verwenden Sie für eine Videoanfrage eine der folgenden Möglichkeiten:
- (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;
Verwenden Sie für eine Playlist-Anfrage eine der folgenden Möglichkeiten:
- (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;
Die Details der Token-Nutzung für den Erwerb von HLSe- und FairPlay-Lizenzen werden vom SDK gehandhabt.
Einzelheiten finden Sie im Wiedergabe-Autorisierungsdienst Abschnitt der Native SDK für iOS-Referenz.
Offline-Wiedergabe
Wenn Sie den Playback Authorization Service mit Offline Playback verwenden, gibt es eine neue Methode zum Erneuern einer FairPlay-Lizenz, die einen Autorisierungstoken akzeptiert:
// 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
}];
Wenn die Lizenzverlängerung abgeschlossen ist, wird der Abschlussblock mit demselben Offline-Video-Token aufgerufen, das übergeben wurde. Ein NSError
zeigt jedes aufgetretene Problem an (oder null, wenn kein Fehler vorliegt).
Einzelheiten finden Sie im Erneuern einer FairPlay-Lizenz Abschnitt der Native SDK für iOS-Referenz.
Antworten
Die folgenden Antworten sind mit PAS verbunden:
- 200 - Lizenz darf fortgesetzt werden
- 401 - Die Lizenzlieferung darf nicht fortgesetzt werden