ทำให้ใช้งานได้จริง
ระบบล็อกอินสำหรับผู้ใช้ — โดยไม่ต้องเก็บรหัสผ่าน
ทันทีที่แอปมีผู้ใช้มากกว่าหนึ่งคน มันต้องรู้ว่าใครเป็นคนขอ หน้านี้คือทางที่สั้นที่สุดในการได้สิ่งนั้น และเหตุผลว่าทำไมแอปของคุณดีกว่าถ้าไม่เคยถือรหัสผ่านเลย
1. เพิ่มเข้าไป
คำสั่งนี้ให้แอปมี OpenID Connect issuer ของตัวเอง แล้วรีสตาร์ทพร้อมข้อมูลที่จำเป็นใน environment ไม่ต้องไปสมัครอะไร ไม่ต้องไปตั้งค่าที่ผู้ให้บริการ
2. เลือกว่าใครล็อกอินได้บ้าง
มีสี่ช่องทาง: Google, LINE, GitHub และอีเมล เลือกเฉพาะที่ผู้ใช้ของคุณมีจริง — หน้าล็อกอินที่ยื่นปุ่มสี่ปุ่มให้คนที่ใช้อยู่ช่องทางเดียว คือหน้าที่คนกดออก
3. บอกว่าให้ส่งกลับมาที่ไหน
หลังผู้ใช้ล็อกอินเสร็จ เบราว์เซอร์ต้องถูกส่งไปที่ใดที่หนึ่ง ปลายทางนั้นเป็นรายการที่คุณคุมเอง และอะไรที่ไม่อยู่ในรายการจะถูกปฏิเสธ
ระหว่างพัฒนาให้เพิ่ม http://localhost:… ไว้ด้วย รายการนี้มีอยู่เพราะ open redirect บนขั้นตอนล็อกอินคือทางที่ token หลุดไปอยู่ในที่ที่ไม่ควร การปฏิเสธจึงคือตัวฟีเจอร์เอง
4. อ่านค่าในโค้ดของคุณ
แอปจะได้รับ issuer, client id และ secret ผ่าน environment variable แล้วคุยด้วย OIDC ตามมาตรฐาน — ไลบรารีของภาษาไหนก็ใช้ได้ ไม่มีอะไรที่เป็นรูปแบบเฉพาะของเอราวัณให้ต้องเรียนรู้
คำสั่งนี้พิมพ์ discovery endpoint ซึ่งไลบรารีส่วนใหญ่ต้องการแค่ค่านี้ค่าเดียว
สิ่งที่คุณไม่ต้องทำเลย
เก็บรหัสผ่าน แฮชรหัสผ่าน ส่งอีเมลรีเซ็ต ตัดสินใจว่า session อยู่ได้นานแค่ไหน หรือจัดการตอนที่อีเมลของใครสักคนเปลี่ยนที่ Google — ไม่มีอันไหนมาถึงแอปของคุณ แปลว่าไม่มีอันไหนเป็นของคุณที่จะทำพลาด และรหัสผ่านที่ไม่เคยถือ ย่อมรั่วจากฐานข้อมูลที่คุณไม่ได้ดูแลไม่ได้
สิ่งที่ดูได้คือใครล็อกอินเข้ามาบ้าง ซึ่งปิดบังไว้เป็นค่าเริ่มต้น เพราะเป็นข้อมูลของผู้ใช้ ไม่ใช่ของคุณที่จะเปิดดูเล่นๆ