- 인쇄
- PDF
Signed URL
- 인쇄
- PDF
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를 확인할 수 있는 경로는 다음과 같습니다.
- Python: https://github.com/akamai/EdgeAuth-Token-Python
- Java: https://github.com/akamai/EdgeAuth-Token-Java
- Ruby: https://github.com/akamai/EdgeAuth-Token-Ruby
- NodeJS: https://github.com/akamai/EdgeAuth-Token-Node
- Golang : https://github.com/mobilerider/EdgeAuth-Token-Golang
- C# : https://github.com/BookBeat/EdgeAuth-Token-CSharp
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을 생성하는 방법은 다음과 같습니다.
- 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(); } } }
- 생성한 Token을 포함하여 Request URL을 생성해 주십시오.
http://example.cdn.ntruss.com/sample.pdf?token=st=1592202370~exp=1592205970~acl=/sample.pdf*~hmac=d422a548ae769bbaddc1d27f03fe6e096a4ba492928f3eb9c09824f93d78f507
- 생성한 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을 생성하는 방법은 다음과 같습니다.
- 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
- 생성한 Token을 포함하여 Request URL을 생성해 주십시오.
http://example.cdn.ntruss.com/sample.pdf?token=st=1592204787~exp=1592208387~acl=/sample.pdf*~hmac=79872098f16596c8c40ebab649ae2aac8cce3e3bece204b641c99b6cfac42779
- 생성한 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을 생성하는 방법은 다음과 같습니다.
- 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; } } }
- 생성한 Token을 포함하여 Request URL을 생성해 주십시오.
http://example.cdn.ntruss.com/sample.pdf? token=st=1628596072~exp=1628682472~acl=/sample.pdf*~hmac=8094467ff875e72e8fccc2e579a0cfd002f680cda7acd10b820c193f671952d8
- 생성한 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로 정확하게 동기화하는 것이 중요합니다.