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()
บังคับใช้สื่อกลางด้วย 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