ยืนยันอีเมล

Email Verification API เป็นข้อเสนอที่ช่วยให้เบราว์เซอร์สื่อสารกับผู้ให้บริการอีเมลได้โดยตรงเพื่อยืนยันว่าผู้ใช้เป็นเจ้าของอีเมล โดยผู้ใช้ป้อนอีเมล ส่งแบบฟอร์ม และเว็บไซต์จะยืนยันโทเค็นการยืนยันอีเมลที่ลงชื่อแล้วจากเบราว์เซอร์กับผู้ให้บริการโดยไม่ต้องส่งอีเมลหรือขัดจังหวะขั้นตอนของผู้ใช้

เมื่อรวบรวมอีเมลระหว่างการลงชื่อสมัครใช้ การลงชื่อเข้าใช้ การชำระเงิน การสมัครรับจดหมายข่าว หรือการกู้คืนบัญชี โดยปกติแล้วเว็บไซต์จะยืนยันว่าผู้ส่งแบบฟอร์มควบคุมอีเมลดังกล่าว วิธีการยืนยันที่มีอยู่กำหนดให้ผู้ใช้ต้องออกจากเว็บไซต์ สลับแอปเพื่อตรวจสอบกล่องจดหมาย คัดลอก OTP หรือคลิกลิงก์สำหรับการยืนยัน การขัดจังหวะนี้จะเพิ่มอัตราการเลิกใช้และอัตราการละทิ้งเซสชันสำหรับทั้งผู้ใช้ที่เป็นบุคคลจริงและเอเจนต์อัตโนมัติ ผู้ใช้มักพบปัญหาเกี่ยวกับวิธีการยืนยันที่มีอยู่ เช่น อีเมลล่าช้า ลิงก์หมดอายุ หรือรหัสที่ไม่รู้จัก

การสาธิตพรอมต์ผู้ใช้สำหรับการยืนยันอีเมล
การสาธิตข้อความแจ้งผู้ใช้สำหรับการยืนยันอีเมล

การยืนยันอีเมลทำหน้าที่เป็นการเพิ่มประสิทธิภาพแบบต่อเนื่องสำหรับขั้นตอนที่มีอยู่ ดังนี้

  • ไม่มีการขัดจังหวะ: การยืนยันจะเกิดขึ้นในเบื้องหลังขณะที่ผู้ใช้ กรอกแบบฟอร์ม
  • ไม่จำเป็นต้องตรวจหาฟีเจอร์: เว็บไซต์จะเพิ่มช่องป้อนข้อมูลอีเมลและช่องป้อนข้อมูลโทเค็นที่ซ่อนไว้ ลงในแบบฟอร์ม หากเบราว์เซอร์หรือผู้ให้บริการไม่รองรับการยืนยันอีเมล หรือหากการยืนยันล้มเหลว เว็บไซต์จะกลับไปใช้ขั้นตอนการยืนยันอีเมลเริ่มต้น
  • ลดความเสี่ยงจากฟิชชิง: ไม่ต้องคัดลอกรหัสหรือไม่มีโอกาสที่จะ ส่งผู้ใช้ไปยังเว็บไซต์ปลอม

คุณสามารถทดสอบขั้นตอนการทำงานในการสาธิตได้ดังนี้

ข้อควรพิจารณาเกี่ยวกับช่วงทดลองใช้จากต้นทาง

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

หากพบข้อบกพร่องในการใช้งาน Chrome ให้ยื่นเรื่องในคอมโพเนนต์ต่อไปนี้

คุณควบคุมฟังก์ชันการทำงานของช่วงทดลองใช้จากต้นทางตามการตอบสนองแต่ละรายการได้โดยใส่โทเค็นช่วงทดลองใช้จากต้นทาง ซึ่งจะช่วยให้คุณจำกัดฟีเจอร์ไว้สำหรับผู้ใช้บางกลุ่ม เช่น กลุ่มผู้ใช้ที่เข้าร่วมการทดสอบ A/B หรือหากคุณมีกลุ่มผู้ใช้ที่เข้าร่วมการทดสอบเบต้าหรือกลุ่มผู้ใช้ที่เข้าร่วมเวอร์ชันตัวอย่างทดลองใช้ คุณอาจต้องการหรือจำเป็นต้องเปิดใช้ฟีเจอร์นี้สำหรับผู้ใช้ดังกล่าว ในกรณีนี้ ให้ตรวจสอบกับอีเมลที่ระบุก่อนที่จะออกหรือตรวจสอบโทเค็น

ช่วงทดลองใช้จากต้นทางยังมีขีดจำกัดการเข้าชมเพื่อลดจำนวนเว็บไซต์ที่ใช้ฟีเจอร์นี้ก่อนเปิดตัว API ของผู้ออกอยู่ระหว่างการพัฒนา และคุณควรคาดการณ์การเปลี่ยนแปลงที่ไม่เข้ากันกับเวอร์ชันก่อนหน้าพร้อมกับการอัปเดต UX ของ Chrome

โปรดดูข้อมูลอัปเดตเพิ่มเติมในบล็อกที่นี่และใน evp-announce@chromium.org เมื่อการพัฒนาคืบหน้า

ขั้นตอนการยืนยันอีเมล

ส่วนต่อไปนี้จะอธิบายคำสำคัญและขั้นตอนโปรโตคอลเมื่อใช้ Email Verification API

คำสำคัญ

คำสำคัญสำหรับ Email Verification API มีดังนี้

  • ผู้ยืนยัน: เว็บไซต์ที่รวบรวมอีเมลและต้องการยืนยันอีเมลดังกล่าว ผู้ยืนยันเรียกอีกอย่างว่า บุคคลที่สามที่เชื่อถือได้
  • ผู้ให้บริการอีเมล: บริการที่ให้บริการอีเมลของผู้ใช้ เช่น gmail.com
  • ผู้ออก: บริการที่จัดการบัญชีสำหรับอีเมลของผู้ใช้ เช่น ตัวอย่าง accounts.google.com ผู้ออกเรียกอีกอย่างว่า ผู้ให้บริการ ข้อมูลประจำตัว

ในบางกรณี ผู้ให้บริการอีเมลและผู้ออกจะดำเนินการจากโดเมนเดียวกัน อย่างไรก็ตาม คุณควรแยกความแตกต่างระหว่างผู้ให้บริการอีเมลและผู้ออก เนื่องจาก Email Verification API ใช้เซสชันที่ใช้งานอยู่ในเบราว์เซอร์กับผู้ให้บริการข้อมูลประจำตัวเป็นวิธีการยืนยัน ตัวอย่างเช่น หากต้องการยืนยัน example@gmail.com ผู้ใช้ต้องลงชื่อเข้าใช้ google.com ด้วยบัญชีดังกล่าวในเบราว์เซอร์เดียวกัน

ขั้นตอนโปรโตคอล

สถาปัตยกรรมขั้นตอนการยืนยันอีเมล
สถาปัตยกรรมขั้นตอนการยืนยันอีเมล
  1. การแสดงแบบฟอร์ม: บุคคลที่สามที่เชื่อถือได้จะแสดงแบบฟอร์ม HTML ที่มี <input type="email"> และอินพุตที่ซ่อนไว้ซึ่งทำเครื่องหมายด้วย autocomplete="email-verification-token" รวมถึง nonce ที่ไม่ซ้ำกันต่ออินสแตนซ์
  2. การป้อนอีเมล: เมื่อผู้ใช้ป้อนอีเมล ไม่ว่าจะโดยการเลือก คำแนะนำการป้อนข้อความอัตโนมัติ หรือโดยการพิมพ์หรือวางและออกจากช่อง (blur) เบราว์เซอร์จะเริ่มการยืนยันในเบื้องหลัง
  3. การค้นพบและเซสชัน: เบราว์เซอร์จะค้นหาบันทึก DNS TXT สำหรับ _email-verification.<email-domain> เพื่อค้นหาต้นทางของผู้ออกที่ได้รับอนุญาตของผู้ให้บริการ จากนั้นจะตรวจสอบว่าผู้ใช้มีเซสชันที่ใช้งานอยู่หรือไม่โดยใช้การกำหนดค่า .well-known/web-identity และปลายทางบัญชี FedCM ของผู้ออก หากโดเมนไม่ได้เผยแพร่บันทึก EVP หรือไม่มีเซสชันที่ใช้งานอยู่ เบราว์เซอร์จะหยุดการยืนยันโดยไม่แจ้งให้ผู้ใช้ทราบ
  4. การออกโทเค็น: เบราว์เซอร์จะค้นหา issuance_endpoint จาก .well-known/email-verification สร้างคู่คีย์ชั่วคราว และ ส่งคำขอ HTTP POST โดยใช้ลายเซ็นข้อความ HTTP (RFC 9421) พร้อม คุกกี้เซสชันของบุคคลที่หนึ่งของผู้ให้บริการและอีเมลเป้าหมายเพื่อรับ โทเค็นการยืนยันอีเมล (EVT) ที่ลงชื่อแล้ว
  5. การผูกคีย์และการส่ง: เบราว์เซอร์จะผูก EVT ที่ลงชื่อแล้วกับ ต้นทางของบุคคลที่สามที่เชื่อถือได้และ nonce ของแบบฟอร์มภายใน Key Binding JWT (KB-JWT) และแสดงการแจ้งเตือนขนาดเล็กเพื่อแจ้งให้ผู้ใช้ทราบว่าผู้ให้บริการอีเมลได้ยืนยันอีเมลแล้ว เมื่อผู้ใช้ส่งแบบฟอร์ม Chrome จะป้อนข้อมูลรวม (<EVT>~<KB-JWT>) ลงในอินพุตที่ซ่อนไว้
  6. ตรวจสอบการอ้างสิทธิ์และ KB: เซิร์ฟเวอร์ของบุคคลที่สามที่เชื่อถือได้จะแยกวิเคราะห์โทเค็น <EVT>~<KB-JWT> ตรวจสอบการอ้างสิทธิ์ที่คาดไว้ (email, email_verified, aud, nonce, iat, และ exp) และยืนยันลายเซ็นการผูกคีย์กับคีย์สาธารณะชั่วคราวใน cnf.jwk
  7. DNS และคีย์สาธารณะ: บุคคลที่สามที่เชื่อถือได้จะค้นหาบันทึก DNS TXT _email-verification.<email-domain> เพื่อยืนยันว่าตรงกับการอ้างสิทธิ์ ของโทเค็น iss จากนั้นดึงข้อมูลเมตา .well-known/email-verification และคีย์สาธารณะของผู้ออกจาก jwks_uri
  8. ยืนยัน EVT และดำเนินการให้เสร็จสมบูรณ์: บุคคลที่สามที่เชื่อถือได้จะยืนยันลายเซ็น EVT ของผู้ออกโดยใช้ JWKS สาธารณะของผู้ให้บริการ หากไม่ได้รับโทเค็นหรือขั้นตอนการตรวจสอบใดๆ ล้มเหลว เว็บไซต์จะกลับไปใช้กระบวนการยืนยันอีเมลที่มีอยู่

เมื่อผู้ใช้ยืนยันอีเมลเป็นครั้งแรก Chrome จะแสดงข้อความแจ้งขอสิทธิ์ (กล่องโต้ตอบในเดสก์ท็อป หรือ Bottom Sheet ใน Android) ก่อนที่จะขอโทเค็น หากได้รับอนุญาต ระบบจะจดจำสิทธิ์นี้ต่ออีเมลในเว็บไซต์ที่เข้าร่วม

การตั้งค่า Chrome

ผู้ใช้สามารถจัดการอีเมลที่ยืนยันแล้วได้ดังนี้

  • ในเดสก์ท็อป ให้ไปที่การตั้งค่า > การป้อนข้อความและรหัสผ่านอัตโนมัติ > ข้อมูลติดต่อ > อีเมลที่ยืนยันแล้ว (หรือเปิด chrome://settings/contactInfo)
  • ใน Android ให้ไปที่การตั้งค่า > ที่อยู่และอื่นๆ > อีเมลที่ยืนยันแล้ว

ผู้ใช้สามารถปิดใช้ฟีเจอร์นี้ทั้งหมดหรือจัดการอีเมลที่ยืนยันแล้วแต่ละรายการได้

ข้อควรพิจารณาเกี่ยวกับกรณีการใช้งาน

การยืนยันอีเมลเป็นการเพิ่มประสิทธิภาพแบบต่อเนื่องสำหรับขั้นตอนที่มีอยู่ ซึ่งช่วยให้ผู้ใช้ไม่ต้องออกจากเว็บไซต์เพื่อดึง OTP หรือคลิกลิงก์ เว็บไซต์สามารถเพิ่มช่องการยืนยันอีเมลลงในแบบฟอร์มที่เกี่ยวข้องทั้งหมด เช่น การเข้าสู่ระบบ การลงชื่อสมัครรับจดหมายข่าว การสร้างบัญชี และการกู้คืนรหัสผ่าน EVP จะเริ่มทำงานก็ต่อเมื่อเบราว์เซอร์รองรับ หากไม่ได้รับรหัสเมื่อส่งหรือขั้นตอนการตรวจสอบใดๆ ล้มเหลว คุณสามารถกลับไปใช้ขั้นตอนการยืนยันอีเมลเริ่มต้นได้ ซึ่งหมายความว่าไม่มีการตรวจหาฟีเจอร์สำหรับ API โดยเว็บไซต์ผู้ยืนยันจะถือว่า EVT เป็นตัวเลือก และจะประมวลผลหากมีอยู่ในคำขอ

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