รองรับการตรวจสอบสิทธิ์ซ้ำอัตโนมัติใน 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) แต่การทำงานของผู้ใช้อาจยุ่งยากอย่างไม่จำเป็นหลังจากได้ดำเนินการไปแล้วครั้งหนึ่ง หลังจากที่ผู้ใช้ให้สิทธิ์ในการสื่อสารระหว่าง RP กับ IdP แล้ว ก็จะไม่ได้รับประโยชน์ด้านความเป็นส่วนตัวหรือความปลอดภัยในการบังคับใช้การยืนยันอื่นของผู้ใช้อย่างชัดแจ้งในสิ่งที่ตนยอมรับไปแล้วก่อนหน้านี้ เราจึงเปิดตัว UX ที่มีประสิทธิภาพมากขึ้นซึ่ง RP จะเลือกให้ผู้ใช้ที่กลับมาได้

FedCM auto-reauthentication ("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 นาทีหลังจากการตรวจสอบสิทธิ์ซ้ำโดยอัตโนมัติเพื่อป้องกันการทำงานลักษณะนี้ ซึ่งหมายความว่าการตรวจสอบสิทธิ์ซ้ำโดยอัตโนมัติจะเกิดขึ้นทุกๆ 10 นาทีทุกๆ 10 นาที เว้นแต่ว่าผู้ใช้จะกลับมาลงชื่อเข้าใช้ในอีก 10 นาที RP ควรเรียก navigator.credentials.preventSilentAccess() เพื่อขอให้เบราว์เซอร์ปิดใช้การตรวจสอบสิทธิ์ซ้ำอัตโนมัติเมื่อผู้ใช้ออกจากระบบ RP อย่างชัดแจ้ง เช่น โดยคลิกปุ่มออกจากระบบ

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

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

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

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

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

แสดงความคิดเห็น

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

รูปภาพโดย Noah Samuel Franz ใน Unsplash