DRM サービスTOP > サイトプロテクトTOP > APIの仕様について

@RTV
会社概要販売代理  
サイトプロテクトとは
サイトプロテクトの動作について
他社サービスとの比較
利用開始までのフロー
DRMパッケージツール
APIの仕様について
オプション専用サーバーについて
ご利用料金について
よくある質問とその答え
導入事例
サイトプロテクトお問い合わせ
サイトプロテクトお申し込み
TOPへ戻る




DRMサービス


@RTV ストリーミング配信サービス
ライブ配信

@RTV ストリーミング配信
ストリーミング配信


専用サーバーサービス
専用サーバー


@RTV 会員制システムASP
会員制サイト


DRM-APIの仕様について
印刷用ドキュメント

1.DRM-API 概要

@RTV DRM サービス「サイトプロテクト」 (以降、当サービスと呼びます) について簡単に紹介し、またその主要機能であるサイトプロテクト APIの説明とサンプルコードを提供します。

当サービスそのものの詳細な情報は当社ウェブサイトのDRMサービスに関する説明
http://drm.atrtv.com/
をご覧ください。

当サービスご利用にあたってお客様にご理解いただく必要のある基本的な流れは以下の通りです。

1.1. ご契約
利用にはまず当サービス利用契約を結ぶ必要があります。ご契約いただきますと、当サービスをご利用いただくためのお客様専用のID(ContentProviderID)とパスワード(ContentProviderPassword)を発行いたします。当社提供のツール類およびAPI利用時にこのIDとパスワードが必要になります。

1.2. ライセンス要求処理プログラムを作成してお客様サーバに設置する
ライセンス要求処理を受け付ける「ライセンス要求処理プログラム」を作成して配置していただきます。

ライセンス要求処理プログラムには、SiteProtect Serverが、エンドユーザから取得したIDとパスワード、及び再生しようとしているコンテンツのContentIDを送信します。ライセンス要求処理プログラムは、これらの値から、どのようなライセンスを発行するべきか、もしくはライセンスを発行しないかどうかを決め、そして決めた内容をSiteProtect Serverに返答する役割を持ちます。

ライセンス要求処理プログラムの詳細については後述いたします

1.3.ツールを使用して基本的な設定を行う
当社が提供する「SiteProtect Utility」の「SiteProtect 設定」ツールを使用して必要な設定を行っていただきます。

現在は「ライセンス要求処理プログラムURI」の設定のみが存在します。この設定は、前節で設置していただいたプログラムをSiteProtect Serverが呼び出す際に使われます。前節のプログラムの配置先を外部ネットワークから参照する際のURIを設定してください。この設定を行うと、すべてのライセンス要求はこのURIに送信されるようになります。

この設定は、プログラムの配置先を変更した際には、いつでも再設定していただけます。設定すると同時に、次からのライセンス要求はすべて、変更後のURIに送信されるようになります。

1.4. コンテンツの登録と保護化済コンテンツの取得
当社が提供する「SiteProtect Utility」の「SiteProtect コンテンツ登録」あるいは「SiteProtect コンテンツ連続登録」を使用して、コンテンツの登録と保護化済コンテンツの取得を行うことができます。

保護対象のメディアの形式は WMA および WMV です。それ以外の形式の場合は、 Microsoft社 が提供しているツール等を利用して、当サービスが保護できる形式に変換する必要があります。また、保護対象のファイルサイズは 2 GBytes が上限となっております。ファイル形式についての詳細は別冊「SiteProtect Data Creation Manual」をご参照願います。

登録ツールは当社の SiteProtect Server にお客様のコンテンツファイルの内容を転送します。そして MSDRM の機能により保護化済コンテンツファイルを作成します。同時に、保護したコンテンツに関する情報を当社のサーバが保持し、後述するライセンスの発行に備えます。そして最後に保護化済コンテンツファイルをお客様のお手元にお送りします。

お客様はこの工程で取得した保護化済コンテンツファイルを配布してください。当サービスではこの保護化済コンテンツファイルを保護します。元となったファイル自体は変更されず、また保護もされません。誤って保護されていないファイルを配布しないようご注意ください。

保護化済コンテンツファイルの送付と同時に、当サービスでのそのファイルの識別用データであるContentIDも併せて送付します。「認証処理」の際には認証用のID・パスワードだけではなく、このContentIDも併せて送ります。コンテンツ単位の再生許可を実現する際に利用できる、コンテンツを識別するための唯一の情報ですので、なくさないようお願いいたします。ContentIDは、お客様に設置していただく「ライセンス要求処理プログラム」に、エンドユーザからのライセンス要求が発生する毎に送信されます。

保護化済コンテンツファイルが本当に保護されているかどうかを確認するには、実際に再生を試みるのが最も簡単な方法です。ID・パスワードの入力が要求されるはずです。再生するには、前節のツールを使用して必要な設定を行い、なおかつ「ライセンス要求処理プログラム」をお客様サーバにご用意いただいた上で、正しく認証できるIDとパスワードを入力してください。プログラムをまだ準備していない段階のときは、ライセンスの発行に「正しく失敗」し不正利用が防止されていることを確認することができます。

1.5. 保護化済コンテンツの配信
SiteProtectの保護機能によって保護されたメディアは、いかなる手段で配信されたとしても、再生時に ID パスワードによる認証が必要になり、不正利用が防止されます。このため、保護済みのコンテンツの配置、配布はお客様が完全に自由に選ぶことができます。当サービスではコンテンツのコピーは一切制限しませんし、一方で配布作業も行いません。

Windows Media ストリーミングサーバ、Webサーバからの配布(IISやApacheなど)、FTPサーバからの配布、P2Pアプリケーション(BitTorrent、Winnyなど)を利用した配布、CD-ROMやDVD-ROM等での物理的な配布など、任意の方法でコンテンツを配布することが可能です。当サービスでは、配布方法を問わず、コンテンツを保護します。P2Pを使用したからといって保護できなくなるなどということはありません。

Windows MediaストリーミングサーバおよびWebサーバ、FTPサーバからの配信に関しましては、当社でもサービスを提供いたしております。宜しければ当サービスと併せてご検討頂けたら幸いです。

当社の専用サーバ事業に関しましては http://www.atrtv.com/ 及び http://server.atrtv.com/ に詳しく紹介させて頂いております。

1.6. ライセンス要求フローとライセンス要求処理プログラム
当サービスの最も重要なポイントは、エンドユーザからのコンテンツ再生のためのライセンス発行要求の受付、認証情報の取得、実際にライセンスを発行する処理の代行にあります。これによりお客様サーバ側では、誰にどんなコンテンツをどのように利用可能にするかもしくはさせないかを通知する機能さえあればよいことになります。これをライセンス要求処理プログラムと呼びます。

ライセンス要求処理プログラムは、当社ではご用意いたしません。お客様ご自身でご用意いただく必要があります。またこのプログラムは、SiteProtect ServerからのHTTPまたはHTTPS要求に返答する形式で実装する必要があります。このためApacheやIIS等のWebサーバプログラムを併用するのが一般的です。

ライセンス要求処理プログラムは、HTTPよりもHTTPSを使うべきです。HTTPSは第三者に通信内容を盗み見られることがないようになっていますので、通信内容に含まれるユーザの入力したIDおよびパスワードが保護されます。一方、HTTPを使うことは可能ですが、この場合はユーザの入力したIDおよびパスワードが保護されません。HTTPを使用された場合にIDおよびパスワードが第三者に漏洩したとしても当社に責任はないものとさせていただきます。

SiteProtect設定ツールの「ライセンス要求処理プログラムURI」の設定で、URIの記述について先頭を「https://」とするとSiteProtect Server は自動的にHTTPSでお客様サーバに接続します。

ライセンス要求フローの始まりは、エンドユーザが保護化済コンテンツファイルを再生しようとするところから始まります。このときに、PC上での再生を許可するライセンスがそのPCにない場合(PC上での再生以外の権限がたとえ残っていたとしても)、Windows Media Player は保護化済コンテンツファイルに記述されているライセンス発行要求先URIにライセンスを要求する通信を行います。これは SiteProtect Server に対し行われるもので、この時点ではまだお客様に意識していただく必要はありません。

DRM-サイトプロテクトのフロー

SiteProtect Server ではまず、エンドユーザにIDとパスワードの入力を求めます。エンドユーザが使用する Windows Media Player が自動的にSiteProtect Serverと通信を行い、SiteProtect Serverが用意するIDとパスワードの入力フォームを表示し、入力を促します。IDとパスワードが入力されると、SiteProtect Serverでは簡単な検査を行います。IDが1文字以上、パスワードは0文字以上でない場合はエンドユーザに再入力を促します。SiteProtect Serverはエンドユーザとの通信で取り扱う文字列の文字コードをUTF-8に限定しています。このため、一般的にIDとパスワードで使われる英数字だけでなく、日本語やその他の言語がそのまま使用可能です。一方で、ShiftJIS等をはじめとしたUTF-8ではないエンコーディングには対応していません。従いまして、UTF-8に存在しない文字をIDとパスワードに使用している場合、本機能を用いてIDとパスワードの取得ができない場合は生じる点に注意してください。例えば、ShiftJISを使用しIDに携帯電話の絵文字を使用している場合は、SiteProtect Serverは正常にIDを取り扱うことができません。

SiteProtect Server がエンドユーザからの入力内容を確認すると、ここでようやくお客様サーバとの通信が始まります。SiteProtect設定ツールの「ライセンス要求処理プログラムURI」に設定されたURIに対し、HTTP(S) POST方式で各種パラメータを送信します。お客様サーバ側ではこれらのパラメータを元に、どんなライセンスを発行するべきか、あるいは発行しないべきかを返答してください。どのようなパラメータが送られてくるか、どのようなパラメータを送り返すべきかについては、次以降の章でご説明いたします。

2.API仕様

エンドユーザからのライセンス要求が、エンドユーザの入力したIDとパスワードと共にSiteProtect Serverに到達すると、SiteProtect Serverはこれらの情報をSiteProtect 設定ツールを使用して設定した「ライセンス要求処理プログラムURI」に送信します。

HTTPもしくはHTTPSを使用し、パラメータ自体はHTTP POSTで送られます。HTTPSの場合は、お客様サーバ側の証明書が信頼できるものである必要があります。信頼できない証明機関から発行された証明書や、期限切れの証明書で保護されている場合、HTTPSでの接続に失敗するため通信できなくなります。証明書の失効にご注意ください。

2.1. パラメータ一覧
現在取得できるパラメータは以下の四種類です。
Key Value 意味
contentID 文字列 コンテンツ登録ツールでコンテンツを登録する際にSiteProtect Server が発行する、コンテンツを一意に識別する文字列。16文字またはそれ以上の長さの、半角英数字で構成されています。
UserID 文字列 ユーザが入力したID。1文字以上。UTF-8エンコーディングを使用します。
UserPasswoord 文字列 ユーザが入力したパスワード。0文字以上。UTF-8エンコーディングを使用します。
IPv4 文字列 ユーザの(直前にSiteProtect Serverと通信を行った際の)IPv4アドレス。ドット区切り10進表記(例: 127.0.0.1)。

なんらかの技術上の問題により、取得が出来なかった場合には、このパラメータは送られません。

IPアドレスは、ユーザの利用形態によって、多数のユーザで共用(一部のプロバイダや企業に多い)していたり、あるいは随時変化する可能性(携帯電話会社の回線に多い)があることをご理解ください。
2.2. 仕様拡張ルール
前節以外のパラメータが事前予告なしに付加されることがあります。一般的なサーバプログラムでは、プログラマが直接HTTP POSTパラメータの分割作業をする必要がないことが多いためあまり問題になることはないかと思いますが、パラメータの列挙などを行っている場合は注意してください。今後の追加機能や運用試験などを理由にパラメータが増える可能性があります。

なお、以下のようなパラメータを追加する予定ですが、実装可能性や実装時期は未定です。
Key Value 意味
TransactionID 文字列 SiteProtectが管理する、エンドユーザからの一連のトランザクションを区別するID。16文字またはそれ以上の長さの、半角英数字で構成されています。
2.3. 応用例
よくあるコンテンツ配信の例として、会員であればコンテンツを無制限に利用可能にするという運営方法が考えられるでしょう。有線放送などで見られる方法としては、月額費用を払っている人に対し、任意の楽曲の再生を一定期間許可します。

この場合は、ContentIDを読む必要はなく、
1. UserIDとUserPasswordの対応関係が正しいこと
2. さらにUserIDで表されるエンドユーザが正しく決済を行っているかどうか
という確認を経て、ライセンスを発行するべきかしないべきかを決めることが出来ます。

同じコンテンツ配信でも、コース別に料金を変え、配信するコンテンツを変える場合は、上記方法に加えて、ContentIDも判断材料になってきます。そのUserIDが、そのContentIDで表されるコンテンツを視聴する権利があるかどうかを調べることになるでしょう。

また同時に、ContentIDごとのリクエストの頻度を保持したり、UserIDごとのリクエストの頻度を保持することで、コンテンツ配信における重要な統計情報を得ることもできるでしょう。

具体的なライセンス発行方法とその内容のカスタマイズ方法は次章をご覧になってください。

3.SiteProtectに送り返すパラメータ

ライセンス要求処理プログラムからSiteProtect Serverへの返答は、SiteProtect Serverからの前章のリクエストへの返答として行っていただきます。返答内容は、当社が定義する各種パラメータを組み合わせて作成します。作成した内容は、Body (本文)に直接記述してください。

返答内容は、一般的なHTTP GETの際のパラメータのように作成します。各パラメータは「permission=true」のように「=」で関連づけて表現します。複数のパラメータを使用する場合は、パラメータの間を「&」でつないでください。また、HTTP GETのパラメータと同様、「Value」側は、文字エンコーディングにUTF-8を行い、さらにURLEncodeされている必要があります。

例として、再生を許可、期限はデフォルト値を用い、PC上での再生回数は3回、その他の権限はデフォルトというライセンスを発行させたい場合は以下のような内容をBodyに記述してください。

permission=true&count=3

また、再生しようとしているコンテンツを公開停止にしたい場合や、再生しようとしているユーザのIDやパスワードに誤りがある場合は、次のように返答して再生をさせないことができます。

permission=false

3.1. パラメータ一覧
Key Value 意味
permission true / false 利用を許可する場合はtrue。許可しない場合はfalse。このパラメータは必須です。
count 数値 or infinite 再生回数を指定できます。1以上で上限値は未確認。数値の代わりにinfinite を指定すると回数無制限にすることができます。

Windows Media Player でPCでの再生で20回まで確認済みです。

この値はPCでの再生と、ポータブルデバイスでの再生回数との両方に作用します。個別に設定することはできません。

PCでの再生可能回数は、概ね指定した回数通りとなりますが、厳密な回数制限の実現はWindows Media Playerの実装に依存します。

ポータブルデバイスでの再生回数は、ポータブルデバイスへ「転送」する毎に、ここで指定した値が再生可能になります。転送可能回数を2回にしていると、実質的な再生可能回数がこのパラメータの2倍になることに注意してください。

このパラメータは省略が可能で、デフォルト値は 1 です。0 を指定しても 1 扱いとします。
enddatetime 日付時刻 ライセンスの終了日時を指定できます。この値はPCでの再生期限と、ポータブルデバイスでの再生期限との両方に作用します。

このパラメータが指定されていると、再生可能回数に未使用分があっても、再生可能回数が無限回に設定されていても、時間がくれば権利がなくなります。

このパラメータはUTC(協定世界時)です。JSTではない点に注意してください。JST(日本標準時)はUTCより9時間早いので、日本時間での日時から9時間を引いた値を設定する必要があります。

日付時刻のフォーマットは「YYYY-MM-DD-HH-mm-SS」になります。年月日時分秒を数値で指定し、それをハイフンでつなげてください。

例: 2007年1月2日3時4分5秒なら「2007-01-02-03-04-05」及び「2007-1-2-3-4-5」など。各数値の先頭に 0 を付加してもしなくても正しく解釈します。

このパラメータは省略が可能で、デフォルト値は SiteProtect Server 内蔵時計を基準に、24時間後の値が設定されます。

また、不正な日付時刻が設定された場合(例: 月を13月と指定した、日を32日と指定した、閏年以外で2/29を指定した)も、代わりにデフォルト値が採用されます。
transfercount 数値 or infinite 指定した回数だけ、ポータブルデバイスへの転送が可能になります。

一回転送が行われると、転送後の再生回数は count パラメータの(PCで消費する前の)値が使われます。再生回数は、転送を行う度に再設定されるため、実質的にポータブルデバイス上での再生可能回数は「転送回数×再生回数(transfercount x count)」になります。

この値が残っていても、PC上の再生回数を使い切ると、以後のPCでの再生時にWindows Media Player は再びライセンス要求を行います。このライセンス要求に対しライセンスを発行した場合、この2回のライセンスの内容によって、ポータブルデバイスへの転送回数が、以前のものが維持されたり維持されなかったりしますが、当社としてはどういう規則になっているのか確認できていません。このため、同一PCに対する複数回のライセンス発行時のポータブルデバイスへの転送回数設定の変化に関して当社では保証できません。

なお、countパラメータをinfiniteに設定した場合、転送先のポータブルデバイスでは回数無制限に再生できます。enddatetimeをinfinite以外に設定した場合、期限がくるとポータブルデバイス上での再生もできなくなります。countとenddatetimeの両方をinfiniteに設定すると、ポータブルデバイス上で無期限に再生ができるようになります。

このパラメータは省略が可能で、デフォルト値は 0 です。
cdwritecount 数値 or infinite 指定した回数だけ、CD-Rへの転送が許可されます。WMVファイルの場合はその音声トラック部分のみを転送ことができますが動画は取り出されません。

CD-Rへは、DRMを解除して転送します。そうして作成したCD-Rからデータを読み込むことで、誰でも無制限にコピーが可能になります。従いまして、この機能を使用した場合はコンテンツが保護されませんのでご注意ください。

この値を設定していても、countパラメータによるPC上での再生回数権限を使い切るなどした場合に、一緒にこの値も消失することがありますが、仕様です。通常は、PC上での再生権限がなくなると同時にこの権限も強制的に失われます。

このパラメータは省略が可能で、デフォルト値は 0 (転送を許可しない) です。
backup true / false 古いWindows Media Player でライセンスバックアップ機能を使用できるようになる可能性があります。Windows Media Player 11 では正式に使用不可能になっています。パラメータを設定することはできますが、当社では動作保証をしません。

このパラメータは省略が可能で、デフォルト値は false です。
3.2. 仕様拡張ルール
今後の仕様変更や機能追加に伴い、パラメータの意味や記述方法が変更されたり追加されたりする可能性があります。機能追加の場合も、増えたパラメータを通常のルールと同じく「&」で繋いでいくことで対応します。仕様変更や機能追加について、当社から告知した内容で使用を許可すると明言したものについては、お客様側で自由にお使いいただくことができます。

一方、当社が告知していないパラメータも存在しますが、使用しないでください。また、動作保証もいたしません。
3.3. 設定例
最も簡単な設定は、デフォルト値を使うことです。
permission=true&count=3
この場合、その他のパラメータにはデフォルト値が採用されます。再生回数は 1 回になり期限はライセンス発行から24時間、ポータブルデバイスへの転送回数およびCDへの転送回数は 0、バックアップ許可は false です。次のように設定した場合と同等です。
permission=true&count=1&enddatetime=2007-01-01-15-00-00&transfercount=0&
cdwritecount=0&backup=false
(発行日時が日本時間で 2007/01/01 00:00:00 、UTCで2006/12/31 15:00:00 のとき)

ビデオレンタル屋のように、単なる期限の設定のみを行う場合は次のようにします。
permission=true&count=infinite&enddatetime=2010-12-31-23-59-59
再生回数は無制限になり、UTCで2010年12月31日23時59分59秒まで再生できるようになります。

コンテンツを電車の中ででも鑑賞できるようにするために、ポータブルデバイスへの対応も行いましょう。
permission=true&count=infinite&enddatetime=2010-12-31-23-59-59&transfercount=3
こうすることで、ポータブルデバイスでも、UTCで2010年12月31日23時59分59秒まで再生できるようになります。再生回数は無制限になります。ただしこのパターンですと、最大3台のポータブルデバイスに転送できることになります。

transfercountパラメータはinfiniteを設定することで転送回数を無制限にすることができます。もしこのパターンで 3 の設定を20 にしたりinfiniteにしてしまうと、それだけの台数ポータブルデバイスにコピーすることができてしまいます。エンドユーザと、他人にコピーして渡すなという契約をしていたとしても、契約的には不正なコピー行為が、この設定値を上げることで簡単にできてしまいます。

一方でこれを1回にしてしまうと、エンドユーザがポータブルデバイスを買い換えた場合などに、転送権限使用済みという理由により別のポータブルデバイスでの使用ができなくなってしまいます。

このように、セキュリティと利便性はトレードオフの関係にあります。このパターンでは、次のような解決方法で対処するべきでしょう。

・enddatetimeを短めにして、ライセンス要求を何度も行わせることにより、定期的にtransfercountを補充できるようにする
・transfercountを、enddatetimeまでの時間の長さに応じて、適度な大きさにする
・transfercountの上記のような特性について、エンドユーザに事前に十分な告知を行う

一方で、映画館的なパターンを考えてみましょう。オンライン映画館でストリーミング配信を行っているものとします。そこで購入した映画館の入場券を購入すると、その日から3日間の間、その映画を1回だけ観ることができるものとします。
permission=true&count=1&enddatetime=2007-01-05-23-59-59
(現在日時が2007/01/01 00:00:00であった場合)

ところで映画を観るとき、うっかり眠ってしまうことはよくあることです。これが映画館の場合は、通常は(指定席でない限りは)そのまま居座れば、もう一度観ることができるでしょう。

上記パラメータ設定は、そういった現実に即していない厳しすぎる設定といえます。エンドユーザは誤って再生停止ボタンを押したり(停止して再生ボタンを押すだけで、countの値は毎回消費されていきます)、PCのシャットダウンをするかもしれません。そのようなときに、再生回数が減ってしまうのを見て、エンドユーザは憤慨することでしょう。

これに対する解決方法は以下のようなものが考えられます。

・countを3から5程度に増やすなど、再生回数に充分な余裕を持たせる
・countが使い切られたあとのライセンス要求で、お客様サーバ側でも独自にライセンス発行期限を管理しておいて、その期限が来るまでの間は再度countを付与しなおす代わりに、IDとパスワードの入力をさせる
・countの上記のような特性について、エンドユーザに事前に充分な告知を行う


映画館ではないという特性を生かして、営業形態(ルール自体)を変えていく方法も考えられます。


・enddatetimeを数時間後に設定する代わりにcountをinfiniteにする。長編映画の場合は、どのみちそう何度も視聴することはできない。
・countを1に設定し、毎回ライセンス要求を発生させる。サーバ側ではユーザID毎にライセンス要求の発生頻度を監視し、あきらかに再生頻度の高いエンドユーザに警告するかあるいは臨時の再生不許可設定を施す。
4.事例とサンプルプログラム
会員制サイトが既にあるとして、会員であればすべてのコンテンツを観られるようにすることを目指します。

この場合まずは、SiteProtectから送られてくるパラメータのうち、ContentIDは考慮する必要はないでしょう。UserIDとUserPasswordを照合し、正規の会員であるかを判定します。

判定後、次のようにライセンスを発行します。
permission=true&count=infinite&enddatetime=infinite&transfercount=infinite

これだけを行うサンプルプログラムは、次のようになります。ここで紹介するサンプルは、言語はPHP5、OSはLinux系OSで、PHPのプログラムコードはApache等のWebサーバが間接的に呼び出すものとし、文字エンコーディングが入出力ともにUTF-8に設定されているものとします。

<?php
if(
0 == strcmp( $_POST['UserID'], 'Taro' ) &&
0 == strcmp( $_POST['UserPassword'], 'xxxxxxxx' ) )
{ // たろうさんであることを確認した
echo 'permission=';
echo urlencode('true'); // 再生を許可する

echo '&';

echo 'count=';
echo urlencode('infinite'); // 再生回数無制限

echo '&';

echo 'enddatetime=';
echo urlencode('infinite'); // 再生期間無制限

echo '&';

echo 'transfercount=';
echo urlencode('infinite'); // デバイスへの転送を無制限にする
}
else
{ // たろうさんじゃなかった
echo 'permission=';
echo urlencode('false'); // 再生を許可しない
}
?>
このサンプルプログラムでは、ユーザIDはTaro、パスワードはxxxxxxxxの場合のみ動作します。お客様サーバの実際のお客様のIDとパスワードを照合するように書き換える必要があるでしょう。

上記のようにライセンスを発行してしまうと、一度のライセンス発行で、そのPCや転送先ポータブルデバイスで永久に再生が可能になります。この場合、会員が退会してしまった後には閲覧できなくなるようにしたい場合に困ります。

簡単な対処方法は、発行内容に制限をかけることでしょう。再生期間を3ヶ月で切れるようにすれば、3ヶ月後の再生時には再びライセンス要求が来ますので、そのときに再びUserIDとUserPasswordをチェックすることで、長くても退会から3ヶ月後にはコンテンツを利用できなくなるようにすることができます。

permission=true&count=infinite&enddatetime=2007-4-1-0-0-0&transfercount=5
(現在日時が2007/01/01 00:00:00であるものとする)

ここで新しく、プレミアムコンテンツを提供することになったとします。プレミアムコンテンツは、お金を払った特別会員や、その他特別な理由で対象になった会員だけが観ることができるものとします。

そうすると、今までの一般会員向けコンテンツとの区別をつける必要が出てきます。ContentIDをチェックするようにしましょう。
<?php
if( TRUE == is_premium_content( $_POST['ContentID'] ) )
{ // プレミアムコンテンツの処理
if( TRUE == is_premium_user( $_POST['UserID'], $_POST['UserPassword'] ) )
{ // プレミアムユーザであることが確認できた
echo 'permission=';
echo urlencode('true'); // 再生を許可
echo '&';
echo 'count=';
echo urlencode('infinite'); // 再生回数無制限
echo '&';
echo 'enddatetime=';
echo urlencode('2007-01-08-00-00-00'); // 期限を設定する
echo '&';
echo 'transfercount=';
echo urlencode('3'); // デバイスへの転送回数を 3 回まで許可する
}
else
{ // プレミアムコンテンツはプレミアムユーザにしか視聴を許可しない
echo 'permission=';
echo urlencode('false');
}
}
else if( TRUE == is_sample_content( $_POST['ContentID'] ) )
{ // サンプルコンテンツは、UserID,UserPasswordの判定なしに再生できるようにする
echo 'permission=true&count=1';
}
else
{ // その他のコンテンツは、登録ユーザに視聴可能なようにする
if( TRUE == is_valid_user( $_POST['UserID'], $_POST['UserPassword'] ) )
{
echo 'permission=';
echo urlencode('true'); // 再生を許可
echo '&';
echo 'count=';
echo urlencode('infinite'); // 再生回数無制限
echo '&';
echo 'enddatetime=';
echo urlencode('2007-01-08-00-00-00'); // 期限を設定する
echo '&';
echo 'transfercount=';
echo urlencode('3'); // デバイスへの転送を 3 回まで許可する
}
else
{ // 登録ユーザではない
echo 'permission=';
echo urlencode('false'); // 再生を許可しない
}
}
?>
上記プログラムのうち、関数is_premium_content,is_premium_user,is_valid_userはそれぞれお客様に実装していただく必要があります。is_premium_contentは、指定したContentIDで表されるコンテンツがプレミアムコンテンツの場合に1を返す関数であり、is_premium_userはそのユーザがプレミアムコンテンツを観る権利がある場合に1を返す関数であり、is_valid_userはそのユーザが正常に会員として登録されている場合に1を返す関数として作成してください。
 Copyright (C) 2009 RTV. All Rights Reserved.