รองรับการตรวจสอบสิทธิ์ซ้ำอัตโนมัติใน FedCM

Chrome รองรับการตรวจสอบสิทธิ์อีกครั้งโดยอัตโนมัติใน FedCM

Federated Credential Management API (FedCM) เป็น Web API สําหรับการรวมข้อมูลระบุตัวตนที่รักษาความเป็นส่วนตัว เมื่อใช้การรวมข้อมูลประจำตัว RP (บุคคลที่เชื่อถือ) จะอาศัย IdP (ผู้ให้บริการข้อมูลประจำตัว) เพื่อสร้างบัญชีให้ผู้ใช้โดยไม่ต้องใช้ชื่อผู้ใช้และรหัสผ่านใหม่

FedCM ช่วยให้เบราว์เซอร์เข้าใจบริบทที่ RP และ IdP แลกเปลี่ยนข้อมูล โดยจะแจ้งให้ผู้ใช้ทราบเกี่ยวกับข้อมูลและระดับสิทธิ์ที่แชร์ และป้องกันการละเมิดโดยไม่ตั้งใจ FedCM พร้อมใช้งานใน Chrome มาตั้งแต่เวอร์ชัน 108

ใน Chrome 115 ฟีเจอร์ FedCM จะได้รับการสนับสนุนสำหรับการให้สิทธิ์ใหม่อัตโนมัติ ซึ่งจะช่วยปรับปรุงประสบการณ์ของผู้ใช้และทำให้การให้สิทธิ์ใหม่กับ RP มีประสิทธิภาพมากขึ้นหลังจากได้รับความยินยอมครั้งแรก

การตรวจสอบสิทธิ์ใหม่อัตโนมัติ

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

แม้ว่าประสบการณ์การใช้งานที่ชัดเจนของผู้ใช้จะเหมาะสมก่อนที่ผู้ใช้จะสร้างบัญชีที่รวมศูนย์เพื่อป้องกันการติดตาม (ซึ่งเป็นเป้าหมายหลักอย่างหนึ่งของ FedCM) แต่การดำเนินการนี้กลับยุ่งยากเกินความจำเป็นหลังจากที่ผู้ใช้ดำเนินการแล้ว 1 ครั้ง เนื่องจากหลังจากที่ผู้ใช้ให้สิทธิ์เพื่ออนุญาตให้มีการติดต่อระหว่าง RP กับ IdP แล้ว จะไม่มีประโยชน์ด้านความเป็นส่วนตัวหรือความปลอดภัยในการบังคับใช้การยืนยันที่ชัดเจนอีกรอบสำหรับสิ่งที่ผู้ใช้ได้ยอมรับไปแล้วก่อนหน้านี้ ด้วยเหตุนี้ เราจึงเปิดตัว UX ที่มีประสิทธิภาพมากขึ้นซึ่ง RP สามารถเลือกให้ผู้ใช้ที่กลับมาได้

FedCM การตรวจสอบสิทธิ์ใหม่อัตโนมัติ ("การตรวจสอบสิทธิ์ใหม่อัตโนมัติ" หรือ "auto-reauthn" สั้นๆ) ช่วยให้ผู้ใช้ตรวจสอบสิทธิ์อีกครั้งโดยอัตโนมัติได้เมื่อกลับมาหลังจากการตรวจสอบสิทธิ์ครั้งแรกโดยใช้ FedCM "การตรวจสอบสิทธิ์ครั้งแรก" ในที่นี้หมายถึงการที่ผู้ใช้สร้างบัญชีหรือลงชื่อเข้าใช้เว็บไซต์ของ RP โดยการแตะปุ่ม "ดำเนินการต่อในฐานะ..." ในกล่องโต้ตอบการลงชื่อเข้าใช้ของ FedCM เป็นครั้งแรกในอินสแตนซ์เบราว์เซอร์เดียวกัน

กล่องโต้ตอบที่ผู้ใช้แตะเพื่อสร้างบัญชีหรือตรวจสอบสิทธิ์
กล่องโต้ตอบที่ผู้ใช้แตะเพื่อสร้างบัญชีหรือตรวจสอบสิทธิ์

เลือกตัวเลือกสำหรับการให้สิทธิ์ใหม่อัตโนมัติ

แม้ว่าเราจะเปิดตัวการขอสิทธิ์ใหม่อัตโนมัติเพื่อมอบ UX ที่ดีขึ้นและเพื่อให้สอดคล้องกับข้อกําหนด แต่ประสบการณ์การใช้งานเริ่มต้นจะแตกต่างออกไปหากไม่มีการเปลี่ยนแปลงโค้ด เมื่อใช้การขอสิทธิ์ใหม่อัตโนมัติ เบราว์เซอร์จะเปลี่ยนลักษณะการทำงานโดยขึ้นอยู่กับตัวเลือกที่คุณเลือกในmediationตัวเลือกที่นักพัฒนาแอประบุไว้navigator.credentials.get()

const cred = await navigator.credentials.get({
  identity: {
    providers: [{
      configURL: "https://idp.example/fedcm.json",
      clientId: "1234",
    }],
  },
  mediation: 'optional', // this is the default
});

mediation คือพร็อพเพอร์ตี้ใน Credential Management API ซึ่งทำงานในลักษณะเดียวกันกับ PasswordCredential และ FederatedCredential และ PublicKeyCredential รองรับเพียงบางส่วนเช่นกัน พร็อพเพอร์ตี้นี้ยอมรับค่า 4 ค่าต่อไปนี้

  • 'required': ต้องใช้สื่อกลางเสมอเพื่อดําเนินการต่อ เช่น การคลิกปุ่ม "ต่อไป" ใน UI เลือกตัวเลือกนี้หากต้องการให้ผู้ใช้ให้สิทธิ์อย่างชัดเจนทุกครั้งที่ต้องมีการตรวจสอบสิทธิ์
  • 'optional'(ค่าเริ่มต้น): ตรวจสอบสิทธิ์ใหม่โดยอัตโนมัติหากเป็นไปได้ ต้องใช้สื่อกลางหากไม่สามารถทำได้ เราขอแนะนำให้เลือกตัวเลือกนี้ในหน้าลงชื่อเข้าใช้
  • 'silent': ตรวจสอบสิทธิ์ใหม่โดยอัตโนมัติหากเป็นไปได้ ไม่แสดงข้อความหากตรวจสอบสิทธิ์ใหม่ไม่สำเร็จ เราขอแนะนำให้เลือกตัวเลือกนี้ในหน้าเว็บที่ไม่ใช่หน้าลงชื่อเข้าใช้โดยเฉพาะ แต่คุณต้องการให้ผู้ใช้ลงชื่อเข้าใช้อยู่เสมอ เช่น หน้าสินค้าในเว็บไซต์การจัดส่งหรือหน้าบทความในเว็บไซต์ข่าว
  • 'conditional': ใช้สำหรับ WebAuthn และไม่พร้อมใช้งานสำหรับ FedCM ในขณะนี้

การเรียกใช้นี้จะทำให้เกิดการให้สิทธิ์ใหม่อัตโนมัติภายใต้เงื่อนไขต่อไปนี้

  • FedCM พร้อมใช้งาน เช่น ผู้ใช้ไม่ได้ปิดใช้ FedCM ทั่วโลกหรือสำหรับ RP ในการตั้งค่า
  • ผู้ใช้ใช้บัญชีเดียวที่มี FedCM API เพื่อลงชื่อเข้าใช้เว็บไซต์ในเบราว์เซอร์นี้
  • ผู้ใช้ลงชื่อเข้าใช้ IdP ด้วยบัญชีดังกล่าว
  • ไม่มีการขอสิทธิ์ใหม่อัตโนมัติในช่วง 10 นาทีที่ผ่านมา
  • RP ไม่ได้โทรหา navigator.credentials.preventSilentAccess() หลังจากการลงชื่อเข้าใช้ครั้งก่อนหน้า

เมื่อเป็นไปตามเงื่อนไขข้างต้น ระบบจะเริ่มพยายามตรวจสอบสิทธิ์ผู้ใช้อีกครั้งโดยอัตโนมัติทันทีที่เรียกใช้ FedCM navigator.credentials.get()

ผู้ใช้ตรวจสอบสิทธิ์อีกครั้งโดยอัตโนมัติผ่าน FedCM

บังคับใช้สื่อกลางด้วย preventSilentAccess()

การรับรองผู้ใช้อีกครั้งโดยอัตโนมัติทันทีหลังจากที่ออกจากระบบจะไม่เป็นประสบการณ์ที่ดีสำหรับผู้ใช้ ด้วยเหตุนี้ FedCM จึงมีระยะเวลาพัก 10 นาทีหลังจากการขอสิทธิ์ใหม่อัตโนมัติเพื่อป้องกันไม่ให้เกิดพฤติกรรมนี้ ซึ่งหมายความว่าการขอสิทธิ์ใหม่อัตโนมัติจะเกิดขึ้นไม่เกิน 1 ครั้งในทุกๆ 10 นาที เว้นแต่ผู้ใช้จะลงชื่อเข้าใช้อีกครั้งภายใน 10 นาที RP ควรเรียกใช้ navigator.credentials.preventSilentAccess() เพื่อขอให้เบราว์เซอร์ปิดใช้การตรวจสอบสิทธิ์ใหม่อัตโนมัติอย่างชัดเจนเมื่อผู้ใช้ออกจากระบบ RP อย่างชัดแจ้ง เช่น โดยการคลิกปุ่มออกจากระบบ

function signout() {
  navigator.credentials.preventSilentAccess();
  location.href = '/signout';
}

ผู้ใช้เลือกไม่ใช้การขอสิทธิ์ใหม่อัตโนมัติได้ในการตั้งค่า

ผู้ใช้เลือกไม่ใช้การให้สิทธิ์ใหม่อัตโนมัติได้จากเมนูการตั้งค่า โดยทำดังนี้

  • ใน Chrome บนเดสก์ท็อป ให้ไปที่ chrome://password-manager/settings > ลงชื่อเข้าใช้โดยอัตโนมัติ
  • ใน Chrome บน Android ให้เปิดการตั้งค่า > เครื่องมือจัดการรหัสผ่าน > แตะไอคอนรูปเฟืองที่มุมขวาบน > ลงชื่อเข้าใช้โดยอัตโนมัติ

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

แชร์ความคิดเห็น

หากกำลังทดสอบ FedCM คุณสามารถแชร์ความคิดเห็นหรือปัญหาที่พบได้crbug.com ในส่วนคอมโพเนนต์ "Blink>Identity>FedCM"

รูปภาพโดย Noah Samuel Franz จาก Unsplash