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
- หน้าที่หลัก:
- ใช้เป็น Master Key สำหรับ sign Token ให้ Frontend นำไปใช้ auth (คำนวณ HMAC-SHA256)
- ใช้ยืนยันตัวเป็นผู้ควบคุม (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 คู่ใหม่ให้ทันทีเพื่อใช้กับอัปเดตใหม่
