สารบัญ

ต่อระบบ

แอป dev กับ production

ลงทะเบียนแอป -dev แยกจาก production บน Pi Auth ตัวเดียว และกฎเรื่อง secret/redirect

ใช้ Pi Auth ตัวเดียว (auth.suphark.com) ทั้งตอนพัฒนาและ production — แยกกันที่ "แอป" (client) คือลงทะเบียนสองแอป ไม่ได้แยกระบบ

วิธีตั้ง (ต่อหนึ่งแอป)

productiondev
ชื่อแอปใน Pi Authmy-appmy-app-dev
redirect URIhttps://my-app.example.com/auth/callbackhttp://localhost:3000/auth/callback
devModeปิดเปิด (ใช้ localhost ได้)
client id / secretชุดของ my-appชุดของ my-app-dev
เก็บ secret ที่env ของ hosting (production).env.local บนเครื่อง (ไม่ commit)
PI_AUTH_ISSUERhttps://auth.suphark.comเหมือนกัน

กฎ

  1. secret ของ production ห้ามอยู่บนเครื่อง dev — เครื่อง dev ใช้แอป -dev เท่านั้น
  2. แอป production ห้ามมี redirect localhost และไม่เปิด devMode
  3. ตั้งชื่อ <แอป>-dev เสมอ เพื่อให้เห็นในคอนโซลและ audit ว่าเป็น dev
  4. ข้อมูลธุรกิจของแอป (ฐานข้อมูลของแอปเอง) แยกหรือรวม dev/production เป็นเรื่องของแต่ละแอป

ข้อจำกัดของแอป dev

  • Pi Auth ดึง /auth/manifest จากเครื่อง dev ไม่ได้ จึงกด Sync ที่แอป -dev ไม่ได้ — ใช้ pi-auth manifest sync จากเครื่อง (ดู Permission manifest) หรือทำ role ให้เหมือนแอป production ด้วยมือ
  • back-channel logout ไปไม่ถึง localhost — ฝั่ง dev พึ่งอายุ session ที่สั้น ไม่ต้องตั้ง Redis บนเครื่อง
  • e2e/CI ที่ต้องล็อกอินแล้ว ใช้ ล็อกอินบัญชีทดสอบ กับแอป -dev — ห้ามคัดลอก session ของคนจริงไปเก็บเป็น secret ของ CI
  • ไม่ได้แยกผู้ใช้แบบ instance dev/production — ถ้าต้องแยกข้อมูลผู้ใช้จริง ต้องตั้ง Pi Auth อีกชุด