Signed URL

Prev Next

Classic/VPC環境で利用できます。

Secure Tokenベースのセキュリティ URLでコンテンツへのアクセスを制限する方法を説明します。Secure Tokenはワンタイムの Access Tokenを作成し、コンテンツリクエスト時に認証に成功したリクエストにのみコンテンツをレスポンスします。Secure Tokenは URL内の Query Stringと Headerの Cookieヘッダでサポートします。

Secure Token SDK

Secure Tokenを作成する SDKをプログラミング言語別に提供します。言語別の Secure Token作成 SDKを確認できるパスは次の通りです。

Secure Tokenの例

Token有効時間の開始時間(st)、終了時間(exp)、ACL(URLパス条件)を活用して認証 tokenを作成し、作成された tokenを Query String、Cookieヘッダに渡す設定例を説明します。例で Token作成のための Parameter情報は次の通りです。

  • Token名: 「token」値で作成
  • Start(st)/End times(exp): 認証 Tokenが有効な開始/終了時間
  • Key: Security Token設定時に発行される key値で作成
  • ACL(Access Control List): tokenでワンタイムアクセス許可対象 URI(特殊文字*で特定の Path単位で設定可能)

JAVAを使用した認証 Token作成

JAVAを使用して認証 Tokenを作成する方法は次の通りです。

  1. Java SDKを活用して tokenを作成するコードを作成します。
    package com.akamai.edgeauth;
    
    public class ExampleEdgeAuth {
       public static void main(String[] args) {
         String hostname = "example.cdn.ntruss.com";   //サービスドメイン名
         String ET_ENCRYPTION_KEY = "b2b1";            //tokenを作成するための key
         String tokenName = "token";                   //指定した「token」名
         long duration = 3600L;                        // 3600 seconds = 1 hour
    
         try {
             EdgeAuth ea = new EdgeAuthBuilder()
                     .key(ET_ENCRYPTION_KEY)
                     .startTime(EdgeAuth.NOW)
                     .windowSeconds(duration)
                     .tokenName(tokenName)
                     .escapeEarly(false)
                     .build();
    
             String acl = "/sample.pdf*"; //*/
             String file_url = "/sample.pdf";
             String token = ea.generateACLToken(acl);
             String url = String.format("http://%s%s?%s=%s", hostname, file_url, tokenName, token);
    
             System.out.println(url);
    
         } catch (EdgeAuthException e) {
             e.printStackTrace();
         }
       }
    }
    
  2. 作成した Tokenを含めて Request URLを作成します。
    http://example.cdn.ntruss.com/sample.pdf?token=st=1592202370~exp=1592205970~acl=/sample.pdf*~hmac=d422a548ae769bbaddc1d27f03fe6e096a4ba492928f3eb9c09824f93d78f507
    
  3. 作成した Tokenを Cookieヘッダに含めます。
    - URL: http://example.cdn.ntruss.com/sample.pdf
    -リクエスト時に含む Header情報 
    Cookie:  token=st=1628596072~exp=1628682472~acl=/sample.pdf*~hmac=8094467ff875e72e8fccc2e579a0cfd002f680cda7acd10b820c193f671952d8
    

Pythonを使用した認証 Token作成

Pythonを使用して認証 Tokenを作成する方法は次の通りです。

  1. Gitで提供したファイルで Tokenを作成します。
    $ python cms_edgeauth.py -k b2b1 -n token -s now -w 3600 -a /sample.pdf* 例のように入力語を入力
    -出力結果:
    token=st=1592204787~exp=1592208387~acl=/sample.pdf*~hmac=79872098f16596c8c40ebab649ae2aac8cce3e3bece204b641c99b6cfac42779
    
  2. 作成した Tokenを含めて Request URLを作成します。
    http://example.cdn.ntruss.com/sample.pdf?token=st=1592204787~exp=1592208387~acl=/sample.pdf*~hmac=79872098f16596c8c40ebab649ae2aac8cce3e3bece204b641c99b6cfac42779
    
  3. 作成した Tokenを Cookieヘッダに含めます。
    - URL: http://example.cdn.ntruss.com/sample.pdf
    -リクエスト時に含む Header情報 
    Cookie:  token=st=1628596072~exp=1628682472~acl=/sample.pdf*~hmac=8094467ff875e72e8fccc2e579a0cfd002f680cda7acd10b820c193f671952d8
    

C#を使用した認証 Token作成

C#を使用して認証 Tokenを作成する方法は、次の通りです。

  1. Gitで提供したファイルで Token作成するコードを作成します。
    using BookBeat.Akamai.EdgeAuthToken;
    namespace MyNameSpace {
        public class MyTokenGenerator {
            public string GenerateMyToken(long window, string acl, string key) {
                var tokenConfig = new AkamaiTokenConfig
                {
                    Window = window, // Time to live (in seconds)
                    Acl = /sample.pdf*, // Access control list containing token permissions
                    Key = b2b1, // Encryption key
                    StartTime = DateTimeOffset.Now.ToUnixTimeSeconds() // Time to Start Timing(From Now)
                };
    
                var tokenGenerator = new AkamaiTokenGenerator();
                var token = tokenGenerator.GenerateToken(tokenConfig);
    
                return token;
            }
        }
    }
    
  2. 作成した Tokenを含めて Request URLを作成します。
    http://example.cdn.ntruss.com/sample.pdf? token=st=1628596072~exp=1628682472~acl=/sample.pdf*~hmac=8094467ff875e72e8fccc2e579a0cfd002f680cda7acd10b820c193f671952d8
    
  3. 作成した Tokenを Cookieヘッダに含めます。
    - URL : http://example.cdn.ntruss.com/sample.pdf
    -リクエスト時に含む Header情報 
    Cookie:  token=st=1628596072~exp=1628682472~acl=/sample.pdf*~hmac=8094467ff875e72e8fccc2e579a0cfd002f680cda7acd10b820c193f671952d8
    
注意

ユーザーの Token作成サーバの時間が Global Edgeサーバの時間より2~4秒ほど早い場合、Edgeサーバでトークンの開始時間(st値)が「too early」と認識され、認証に失敗することがあります。したがって、Token作成メソッド呼び出し時、start time値は現在の時間より10秒早く設定し、end time値は10秒だけ増やすことをお勧めします。もっとも重要なのは、Tokenを作成するウェブサーバの時間を NTPで正確に同期することです。