CMC CSP Docs
  • 👋Welcome to CMC CSP
  • 🌟Getting Started
    • Register and Login
    • CSP General Initial Setup
  • 📃Account and Billing Management
    • IAM
      • IAM Overview
      • Users
      • User Groups
      • Projects
      • Permissions
      • Audit Logs
    • Quotas
      • Quotas CMC Cloud CDN & Multi CDN
      • Quotas CMC Cloud DNS
      • Quotas CMC Cloud WAF
      • Quotas CMC Cloud VA
    • Billing
    • Authentication
  • 📊CMC Security Center
    • Overview
    • Initial Setup
    • Guides
      • Enable Service
      • Overview
      • Alerts
      • Assets
      • Compliance
      • Integration
  • 🧱CMC Cloud WAF
    • Overview
    • Initial Setup
    • Guides
      • Dashboard
      • App Management
      • SSL Management
      • Rule Management
      • Whitelist Management
      • Load Balancer
      • IP List Management
      • Geolocation Access Control
      • Rate Limiting
      • Bot Management
      • API Protection
      • View Logs
  • ☁️CMC Cloud CDN
    • Overview
    • How it works
    • Initial Setup
    • Guides
      • Quản lý và thêm Site mới
      • Cấu hình Cache
      • Cấu hình Origin
      • Cấu hình SSL/TLS
      • Tối ưu tài nguyên
      • Cấu hình Page Rules
      • Cấu hình Firewall Rules
      • Dashboard
      • Analytics & Log
    • Usage Scenarios
      • Thêm site mới với Domain/IP Adress Origin và SSL certificate cá nhân
      • Thêm site mới với Public S3 buckets Origin và SSL certificate miễn phí
      • Thêm site mới với Private S3 buckets Origin và SSL certificate cá nhân
    • FAQ
      • Usecases triển khai
    • Troubleshooting
      • Thu thập thông tin Sites để khắc phục sự cố
      • HTTP Status Codes
  • 🔗CMC MULTI CDN
    • Overview
    • How it works
    • CDN Providers
    • Initial Setup
    • Guides
      • Cấu hình Multi CDN
    • Usage Scenarios
      • Cấu hình Site sử dụng Multi CDN
    • FAQ
      • Sự khác biệt giữa CDN và Multi-CDN
    • Troubleshooting
  • 📝CMC Cloud DNS
    • Overview
    • How it works
    • Initial Setup
    • Guides
      • Zone
      • Records
      • Access Control
      • Health Check
    • Usage Scenarios
      • Hướng dẫn chuyển và quản trị domain trên CMC Cloud DNS
  • 🔐CMC Certificate Management
    • Overview
    • Guides
      • Manage Certificates
      • Upload Certificate
      • Attach Certificate
  • ⚡️ CMC Cloud VA
    • Overview
    • Guides
      • Dashboard
      • Report
      • Scan
  • 📂CMC Log Export
    • Overview
    • Guides
  • GLOSSARY
    • A-G
      • A
      • B
      • C
      • D
      • E
      • G
    • H-N
      • I
      • J
      • L
      • N
    • O-T
      • O
      • P
      • R
      • S
      • T
    • U-Z
      • U
      • V
      • W
  • Change Log
    • Change Log
Powered by GitBook
On this page
  • Authentication
  • Bước 1. Tạo Access Token
  • Bước 2. Sử dụng Access Token để Xác thực API
  • Code Example
  • Danh Sách API Sử Dụng Access Token
  • Purge Cache
  1. Account and Billing Management

Authentication

PreviousBillingNextOverview

Last updated 5 months ago

Authentication

Để đảm bảo tính bảo mật, cần phải xác thực trong mỗi yêu cầu. Và để hoàn tất việc xác thực cần có Session Key. Phần này giới thiệu cách tạo Session Key từ Access Token.

Bước 1. Tạo Access Token

  1. Đăng nhập

  2. Từ menu, chọn Profile > Access Token

  3. Bấm vào nút "Add Token" ở góc trên bên phải màn hình. Trong popup xác nhận tạo token, chọn Yes.

  4. Hệ thống sẽ sinh ra Access Token gồm 2 thành phần: Public Key (có độ dài 32 byte) và Private Key (có độ dài 64 byte) - như hình dưới.

Lưu ý sau khi tạo: Do người dùng chỉ nhận được Private Key một lần duy nhất, vì vậy cần lưu trữ cẩn thận vì không thể lấy lại được sau khi tạo.

Bước 2. Sử dụng Access Token để Xác thực API

  1. Chuẩn bị thông tin cần thiết để tạo session key:

  • Timestamp: Thời gian request hiện tại (hợp lệ trong vòng 2 phút kể từ khi tạo) - ví dụ: 1709613882.

  • API URL: Đường dẫn API cần gọi (ví dụ: /api/analytics_data/get_all)

  • Token ID (Public Key): ID của Access Token.

  • Private Key: Khóa bí mật đã được lưu trữ ở bước 1.

  1. Tạo session authentication string (chuỗi xác thực) bằng cách ghép nối các thông tin theo dạng:

    keyId + "\$" + API URL + "\$" + Timestamp

    (*ví dụ*: 12fe18b8-d8fd-4476-86eb-ae4d5bb73bd9$/api/analytics_data/get_all$1709613882)

  2. Tạo Signature bằng cách sử dụng thuật toán EdDSA với Private Key để ký session authentication string vừa tạo.

  3. Gửi yêu cầu API với thông tin trong header:

  • Authorization: 'keyId + "$" + Signature'.

  • X-Auth-Datetime: 'Timestamp'.

Code Example

Python

import datetime
import requests
import nacl.bindings
import nacl.encoding
import nacl.signing

ACCESS_KEY_ID     = "<REPLACE-HERE>"
ACCESS_KEY_SECRET = "<REPLACE-HERE>"
URL               = "<REPLACE-HERE>"
SERVER_ADDRESS    = "<REPLACE-HERE>"

private_key_bytes = bytes.fromhex(ACCESS_KEY_SECRET)
seed = nacl.bindings.crypto_sign_ed25519_sk_to_seed(private_key_bytes)
signing_key_loaded = nacl.signing.SigningKey(seed)

timestamp = int(datetime.datetime.now().timestamp())
authString = f"{ACCESS_KEY_ID}${URL}${timestamp}"
signed_with_loaded = signing_key_loaded.sign(bytes(authString, 'utf-8'))

print (f"X-Auth-Datetime: {timestamp}")
print (f"Aurthorization: {ACCESS_KEY_ID}${signed_with_loaded.signature.hex()}")

parameters = {
}

headers = {
    "X-Auth-Datetime": str(timestamp),
    "Authorization": f"{ACCESS_KEY_ID}${signed_with_loaded.signature.hex()}"
}

data = {
    "action":"everything",
    "url":[]
}

response = requests.post(SERVER_ADDRESS + URL, headers=headers, json=data)
if response.status_code == 200:
    print(response.json())
else:
    print("Error: ", response.text)
    print("Error: ", response.status_code)

Danh Sách API Sử Dụng Access Token

Purge Cache

  • Address: https://api.csp.cmctelecom.io/cdn

  • Method: POST

  • URL: /api/cdn/<SITE_ID>/caching_control/purge

  • Response Body

    • 200: Purge cache successfully

    • 400: missing some required header fields

    • 401: access token is invalid or expired

    • 403: you do not have permission

Purge everything

  • Request Body:

{
    "action":"everything",
    "url":[]
}

Custom Purge

  • Request Body:

{
    "action":"custom",
    "url":["/cat.jpg ","/cat.jpg "]
}

Lưu ý: SITE_ID có thể lấy trong thanh URL khi click chi tiết vào một Site

📃
CMC Cloud Security Portal