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(Acess 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.