Signed URL
    • PDF

    Signed URL

    • PDF

    Article Summary

    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で正確に同期することです。


    この記事は役に立ちましたか?

    What's Next
    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.