Skip to content

API Keys (Public / Secret Key)

เมื่อคุณสร้าง Project ใน RawPush Dashboard คุณจะได้รับกุญแจสำคัญ 2 ดอก (API Key Pair) เพื่อใช้ในการควบคุมระบบ ซึ่งทั้งสองดอกออกแบบมาให้ทำหน้าที่แยกกันและมีสิทธิ์ (Permissions) แตกต่างกันอย่างสิ้นเชิง


🔑 1. Public Key (pk_xxx...)

นี่คือกุญแจสาธารณะ ใช้สำหรับยืนยันตัวตนของแอปพลิเคชัน (App Identity) เพื่อบอกระบบ RawPush ว่า Traffic นี้กำลังวิ่งเข้าหา Project ไหน

  • สถานที่ที่ควรใช้: ฝังอยู่ใน Frontend Code (JavaScript/React/Vue), Mobile App (iOS/Android), หรือ URL ทั่วไป
  • ความกังวล: สามารถเปิดเผยตัวอักษรต่อหน้าเว็บได้ (Public) ไม่เป็นอันตรายหากมีคนมา inspect โค้ดเห็นกุญแจนี้
  • สิ่งที่ทำไม่ได้: pk_ จะถูก block สิทธิ์การกระทำที่สำคัญ (เช่น ดึงข้อมูลสถิติ ดึงรายชื่อ user หรือสั่ง publish แบบ server-side ไม่ได้)
  • ตัวอย่างการใช้:
    javascript
    // ยอมรับให้เปิดเผยได้ แปะไว้ในโค้ดฝั่ง Client ได้เลย
    const ws = new WebSocket('wss://api.rawpush.com/ws?app_key=pk_f8k92jdn1...');

🗝️ 2. Secret Key (sk_xxx...)

นี่คือกุญแจหลังบ้านสุดยอดความลับ (Admin / Root level Priveleges) การหลุดรอดของคีย์นี้ หมายถึงคนอื่นสามารถสวมรอยเป็น Server ของโปรเจกต์คุณ และสั่งยิงข้อมูล (Publish) หาใครก็ได้ในแอปของคุณ

  • สถานที่ที่ควรใช้: ถูกฝังมิดชิดอยู่ในระบบ Backend Server เท่านั้น (Environment Variables .env) ไม่ลอยอยู่ในฝั่งหน้าจอผู้ใช้เด็ดขาด
  • ความกังวล: 🚨 ห้าม เปิดเผย, ห้าม commit ลง GitHub, ห้าม แนบใน HTTP Request จาก Frontend Browser
  • หน้าที่หลัก:
    1. ใช้เป็น Master Key สำหรับ sign Token ให้ Frontend นำไปใช้ auth (คำนวณ HMAC-SHA256)
    2. ใช้ยืนยันตัวเป็นผู้ควบคุม (Manager) เมื่อคุณเขียนโค้ดเรียกใช้งาน REST API (เข่น สั่ง Publish Message ยิงแจ้งเตือนเข้าระบบ)
  • ตัวอย่างการใช้ (เซิร์ฟเวอร์เท่านั้น):
    bash
    # ตัวอย่างใน Backend
    curl -X POST https://api.rawpush.com/api/v1/publish \
         -H "X-Api-Key: sk_29dnk3kdn2nd..." \
         -d '...'

สรุปข้อแตกต่างเพื่อจำง่าย:

ความสามารถPublic Key (pk_...)Secret Key (sk_...)
สถานที่จัดเก็บFrontend (รันบนเครื่อง User)Backend (รันบนเซิร์ฟเวอร์ของคุณ)
ความอันตรายหากหลุดต่ำ (แค่ระบุตัวโปรเจกต์)🚨 วิกฤต (ยึดระบบและส่งข้อมูลปลอมได้)
ใช้ต่อ WebSocket (ด่านแรก)✅ อนุญาต❌ หักทิ้ง (ใช้ไม่ได้)
ประทับตราลายเซ็น HMAC (Auth)❌ ทำไม่ได้✅ ต้องใช้เพื่อคำนวณ
ใช้เรียก Backend REST API❌ โดนเด้งบล็อกหมด (Unauthorized)✅ Admin สั่งยิงแจ้งเตือนได้เลย

การหมุนเวียนกุญแจ (Key Rotation)

หากในกรณีฉุกเฉินคุณตกใจหรือพลาดทำ Secret Key หลุดเข้าสู่ระบบ Public (เช่น อัปโหลด .env ผิดไปบน Github) ขอให้คุณเข้าสู่ RawPush Dashboard จากนั้นให้คลิก "Revoke" คีย์ทิ้งโดยด่วน ระบบ RawPush จะคำนวณและตัดการเชื่อมต่อแฝงร้ายแรง หรือใครก็ตามที่กำลังพยายามใช้ Secret Key ดอกเก่าทั้งหมดให้ปลิวทิ้งทันที และระบบจะ Generate คู่ใหม่ให้ทันทีเพื่อใช้กับอัปเดตใหม่

Released under the MIT License.