映像制作 eラーニングのことならビズバレー
文字サイズの変更 標準 
大きい
ホーム > スタッフブログ
スタッフブログ
k.takahashi
k.taguchi
j.hashimoto
j.katou
y.hotate
m.kawai
s_inomata
m_muraoka
ビズバレーは、東京都 千代田区で活動する、映像制作、DVD、eラーニングを扱う会社です。

今回は、ワンタイムURLを実現するやり方について見てみようと思います。ワンタイムURLとは、一般的に、アクセス可能は期限、回数によりそのURLが無効になる仕組みのことを指します。

CDN77.comのワンタイムURLは、Secure Tokenといい、アドレスを発行してから1時間、1日というような、期限を指定することができます。

URLの表記の仕方
通常、動画にアクセスするときは、次のようなアドレスになりますが、
http://ドメイン/bunny5.mp4 

Secure Token のアドレスは、?以降にパラメータが付きます。
http://ドメイン/bunny5.mp4?secure=43KZhIfufpGzFdNvg==,1379658924

このパラメータは、自身でPHPなどのプログラム言語を用いて追加します。そして、このアドレスでWebサーバーにアクセスして、適切なパラメータと判断されると指定期間で接続できるようになります。

DRMのような動画ファイルにセキュリティを埋め込む手法と比べれば弱いですが、そこまで必要ない場合は、有効なやり方です。セキュリティに対しての考え方は、どのくらいの手間とコストを掛けられるのか、また妥協できるのかがポイントになるでしょう。

設定の仕方
それでは実際に設定をしてましょう。
CDN77.comでは、PHPでのやり方が説明されています。これをそのままやってみようと思います。

20130920-1

まずCDN77.comのサイト管理から、Secure Tokenを有効にして、トークンコードを取得します。このコードがCDNのWebサーバーと、URLのパラメータで一致すれば Secure Token として動作します。外部には知られてはいけない秘密の情報ですのでむやみに公言しないように注意してください。

20130921-2

つぎに、例えば 5秒でアドレスが無効になるようにするコードは、次のようになります。


2行目のtime()で現在の時刻を取得して、そこから5をプラスすることで5秒後に無効になる表現をしています。そして4行目にトークンコードを埋め込みます。これは、MD5でハッシュ化して元のトークンコードがわからないようにして、そしてBase64でエンコードしています。

このPHPコードにアクセスすると、このようにURLが生成されます。

20130920-4

このURLをブラウザアドレスにコピペしてアクセスすると、動画が表示されます。

20130921-5

つぎに5秒経ってから、ブラウザをリロードすると、接続に失敗して動画を見ることができなくなります。これがワンタイムURLの効果です。

20130921-6

ワンタイムURLで注意するところ
一見便利のように見えますが、肝となるのが期限の設定です。あまり長すぎると意味がなくなり、短すぎるとネットワークの遅延などにより接続される前に切れる可能性があります。また、レンジリクエスト可能な動画では、どうなるでしょうか。

20130921-8

レンジリクエストは、キャッシュされていない位置に、シーク移動ができ、再生することができますが、そのときサーバーに再接続をしています。そのため、先にアドレスが無効になると、正常に動作いたしません。ある程度、余裕を持った設定が必要になります。

20130921-9
先にアドレスが無効になってしまったケース

ワンタイムURLは、正しい設定をすれば、動画ファイルに特別な設定をせずにセキュアな配信ができるようになります。ただ、メリットもあればデメリットもありますので、使いどころ次第と言っていいかもしれません。

(参考)「HTML5 Video レンジリクエストを利用したシーク移動の仕組み」
http://bizvalley.co.jp/blog/1801.html