入門
Brightcoveの再生認証サービス (PAS) は、DRM で保護された HTTP ライブストリーミング暗号化 (HLSE) コンテンツでダイナミック配信を使用する場合に、さらに高度なセキュリティを提供します。
PAS では、ライセンス要求は署名付き JSON Web トークン (JWT) を使用して認証されます。
ビデオがプレーヤーにロードされ、ソースが選択されると、ビデオライセンスを要求するときに使用されます。
PASの詳細については、概要:再生認証サービス付きDRM ドキュメント。
Androidの実装
Android用のネイティブSDKは現在、HLSeおよびWidevineDASHソースのPASをサポートしています。単一のビデオまたはプレイリストに対するBrightcoveカタログリクエストの一部として認証トークンを提供します。
PASを使用してBrightcoveカタログ要求を行うには、次の手順に従います。
-
作成する
HttpRequestConfigオブジェクトを作成し、次のようにBrightcove認証トークンを設定します。HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder() .setBrightcoveAuthorizationToken(myToken) .build();Authorizationトークンの値は、JSONWebトークンの値になります。
-
作成したら
HttpRequestConfigオブジェクトの場合、次のいずれかのカタログメソッドに渡すことができます。ビデオリクエストの場合は、次のいずれかを使用します。
findVideoByID(String, HttpRequestConfig, VideoListener)findVideoByReferenceID(String, HttpRequestConfig, VideoListener)プレイリストリクエストの場合は、次のいずれかを使用します。
findPlaylistByID(String, HttpRequestConfig, PlaylistListener)findPlaylistByReferenceID(String, HttpRequestConfig, PlaylistListener)HLSeおよびWidevineライセンス取得のトークン使用の詳細は、SDKによって処理されます。
コード例
次の例は、カタログリクエストを行うときに認証トークンを渡す方法を示しています。
String myToken = "...";
HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
.setBrightcoveAuthorizationToken(myToken)
.build();
…
Catalog catalog = new Catalog.Builder(eventEmitter, accountId)
.setPolicy(policyKey)
.setBaseURL(playbackApiBaseUrl)
.build();
catalog.findVideoByReferenceID(videoReferenceId, httpRequestConfig, new VideoListener(){...});
オフライン再生
OfflineCatalog は、HttpRequestConfig を受け取る findVideoByID などのカタログ検索メソッドを継承します。requestPurchaseLicense と requestRentalLicense のオーバーロードもこの設定を受け取ります。次の抜粋では、Offline Playback サンプルアプリの PlaylistModel.findPlaylist ヘルパーを使用しています。
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(@NonNull List<CatalogError> errors) {
Log.e(TAG, "Failed to find playlist: " + errors);
onVideoListUpdated(true);
}
});
詳細については、オフライン再生サンプルアプリを参照してください。
回答
PAS には、次の応答が関連付けられています。
- 200-ライセンスの続行が許可されています
- 401-ライセンス提供は続行できません
制約事項
現在のリリースには制限があります。
- Chromecastは再生認証ではサポートされていません。
iOSの実装
iOS 用ネイティブ SDK 7.0 以降では、設定辞書の BCOVPlaybackService.ConfigurationKeyAuthToken を使用して認証トークンを渡します。動画リクエストには findVideo(withConfiguration:queryParameters:completion:) を使用します。
let configuration: [String: Any] = [
BCOVPlaybackService.ConfigurationKeyAssetID: videoID,
BCOVPlaybackService.ConfigurationKeyAuthToken: authToken
]
playbackService.findVideo(withConfiguration: configuration, queryParameters: nil) { video, jsonResponse, error in
// 取得した動画またはエラーを処理します。
}
プレイリストリクエストには findPlaylist(withConfiguration:queryParameters:completion:) を使用します。
let configuration: [String: Any] = [
BCOVPlaybackService.ConfigurationKeyAssetID: playlistID,
BCOVPlaybackService.ConfigurationKeyAuthToken: authToken
]
playbackService.findPlaylist(withConfiguration: configuration, queryParameters: nil) { playlist, jsonResponse, error in
// 取得したプレイリストまたはエラーを処理します。
}
参照 ID で動画またはプレイリストを取得するには、BCOVPlaybackService.ConfigurationKeyAssetID を BCOVPlaybackService.ConfigurationKeyAssetReferenceID に置き換え、参照 ID をその値に指定します。
HLSeおよびFairPlayライセンス取得のトークン使用の詳細は、SDKによって処理されます。
詳細については、再生認証サービス iOS用ネイティブSDKリファレンスのセクション。
オフライン再生
オフライン再生で再生認証サービスを使用している場合、認証トークンを受け入れるFairPlayライセンスを更新するための新しい方法があります。
// 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
}];
ライセンスの更新が完了すると、渡されたのと同じオフラインビデオトークンを使用して完了ブロックが呼び出されます。アンNSError発生した問題を示します(エラーがない場合はnil)。
詳細については、 FairPlayライセンスの更新 iOS用ネイティブSDKリファレンスのセクション。
回答
PAS には、次の応答が関連付けられています。
- 200-ライセンスの続行が許可されています
- 401-ライセンス提供は続行できません