ข้ามไปยังเนื้อหา
เอราวัณACADEMYEN

ทำให้ใช้งานได้จริง

ระบบล็อกอินให้ผู้ใช้ โดยแอปไม่⁠ต้องเก็บรหัสผ่านเอง

พอแอปมีผู้ใช้มากกว่าหนึ่งคน แอปก็ต้องรู้ว่าใครเป็นใคร บทนี้พาไปทางที่สั้นที่สุด คือให้ Erawan ดูแลการล็อกอินแทน แอปของคุณจะได้ไม่⁠ต้องถือรหัสผ่านของใครเลย

ไม่อยากตั้งเอง ทีม Erawan ตั้งให้ฟรีสำหรับแผน Hobby ขึ้นไป

แอปนี้ต้องมีระบบล็อกอินไหม

ถ้าแอปนี้มีคุณใช้อยู่คนเดียว อย่างหน้าแอดมินหรือเครื่องมือที่ทำไว้ใช้เอง ก็ไม่ต้องทำระบบล็อกอินเลย บอกเอไอให้เปิดแอปแบบเจ้าของเท่านั้น (--access owner) แล้ว Erawan จะกันคนอื่นไว้ตั้งแต่หน้าประตู

บทนี้สำหรับแอปที่ลูกค้าหรือคนทั่วไปต้องสมัครแล้วล็อกอินเข้ามาใช้ ระบบล็อกอินของ Erawan ใช้ได้ตั้งแต่แพ็กเกจฟรี

1. ขอระบบล็อกอินจากเอไอ

เพิ่มระบบล็อกอินให้แอปนี้ด้วย add-on auth ของ Erawan ให้ล็อกอินด้วย Google กับ LINE

ถ้าใช้เทอร์มินัล ก็สั่งบรรทัดนี้

erawan addon add my-app auth

แอปจะรีสตาร์ตพร้อมค่าที่ต้องใช้ใน environment คือ AUTH_ISSUER_URL, AUTH_CLIENT_ID, AUTH_CLIENT_SECRET และ AUTH_JWKS_URL คุณไม่ต้องไปสมัครหรือตั้งค่าอะไรที่ฝั่ง Google หรือ LINE เอง

ค่าพวกนี้เป็น OpenID Connect มาตรฐาน ไลบรารีล็อกอินของภาษาไหนก็ใช้ได้ ไม่มีวิธีเฉพาะของ Erawan ให้ต้องเรียนเพิ่ม ถ้าอยากเห็นค่าทั้งหมดในที่เดียว ใช้คำสั่งนี้

erawan auth info my-app

2. เลือกว่าให้ล็อกอินด้วยอะไร

ถ้าไม่ได้ตั้งอะไร หน้าล็อกอินจะมีให้เลือกครบสี่ทาง คือ Google, LINE, GitHub และอีเมล เปิดไว้เฉพาะทางที่ผู้ใช้ของคุณมีจริงก็พอ ร้านที่ลูกค้าใช้ LINE กันเป็นหลัก ก็ไม่จำเป็นต้องมีปุ่ม GitHub ให้คนงง

erawan auth providers set my-app google,line

3. ปลายทางหลังล็อกอิน

ล็อกอินเสร็จ ระบบจะพาผู้ใช้กลับไปที่แอป แต่ปลายทางต้องอยู่ในรายการที่ตั้งไว้ ปลายทางไหนไม่อยู่ในรายการ ระบบก็ไม่ส่งไป แบบนี้ใครก็หลอกพา token ไปที่อื่นไม่ได้

ในรายการมีไว้ให้แล้วตั้งแต่แรก คือ path ที่ใช้กันบ่อยบน my-app.erawan.app อย่าง /auth/callback กับ /api/auth/callback และ localhost:3000 สำหรับตอนพัฒนา ถ้าแอปใช้ path อื่น พอร์ตอื่น หรือย้ายไปอยู่บนโดเมนของคุณเอง ก็เพิ่มเข้าไป

erawan auth callback add my-app https://shop.example.com/auth/callback

4. ให้หน้าล็อกอินเป็นภาษาไทย

หน้าล็อกอินที่ผู้ใช้เห็นตั้งให้เปิดมาเป็นภาษาไทยได้ และใส่ชื่อแอป สี กับโลโก้ของคุณเองได้ด้วย คำสั่งข้างล่างตั้งภาษาไทย ถ้าจะใส่ชื่อ สี หรือโลโก้ ก็เติม --name, --color หรือ --logo ต่อท้าย ส่วนสีที่เลือกได้ ดูด้วยคำสั่ง erawan auth theme show my-app

erawan auth theme set my-app --lang th

ถ้าล็อกอินแล้วมีปัญหา

  • ผู้ใช้หลุดออกจากระบบทุกชั่วโมง แปลว่าแอปไม่ได้ขอ offline_access ตอนพาผู้ใช้ไปล็อกอิน บอกเอไอให้เพิ่ม scope นี้ แอปจะได้ refresh token ไว้ต่ออายุเอง
  • ล็อกอินแล้วเจอ invalid_client แปลว่าแอปส่ง client secret มาใน header แบบ Basic แต่ระบบตั้งไว้ให้รับใน body ของคำขอ สั่ง erawan auth method set my-app basic มีผลทันที ไม่ต้อง deploy ใหม่

สิ่งที่แอปของคุณไม่ต้องทำเลย

เก็บรหัสผ่าน แฮชรหัสผ่าน หรือส่งอีเมลรีเซ็ตรหัส เรื่องพวกนี้ไม่มาถึงแอปของคุณเลย และรหัสผ่านที่ไม่เคยอยู่ในฐานข้อมูลของคุณ ก็ไม่มีทางรั่วออกไปจากตรงนั้น

อยากรู้ว่ามีใครล็อกอินเข้ามาแล้วบ้าง ใช้คำสั่งนี้ ระบบปิดอีเมลและชื่อไว้บางส่วนเป็นค่าเริ่มต้น เพราะเป็นข้อมูลของผู้ใช้ ถ้าจำเป็นต้องเห็นเต็ม ๆ ค่อยเติม --unmask

erawan auth users my-app

พอมีผู้ใช้จริง ย้ายไปอยู่บนโดเมนของคุณ

ที่อยู่ erawan.app เหมาะกับเว็บทั่วไปและเดโม แต่แอปที่มีคนล็อกอินจริงควรอยู่บนโดเมนของคุณเอง เพราะเบราว์เซอร์จะนับโดเมนนั้นเป็นเว็บของคุณคนเดียว ไม่ปนกับแอปอื่นที่อยู่บน erawan.app ด้วยกัน วิธีทำอยู่ในบทใช้โดเมนของคุณเองกับ Erawan เริ่มที่แพ็กเกจ Hobby

บทเรียนเอราวัณคลาวด์ทั้งหมด

เพิ่มระบบล็อกอินให้ผู้ใช้ — Erawan