ใน Chrome 123 คุณสามารถใช้คำแนะนำโดเมนควบคู่ไปกับ Federated Credential Management API (FedCM) ด้วย Domain Hint API ทำให้นักพัฒนาซอฟต์แวร์สามารถมอบประสบการณ์ที่ดียิ่งขึ้นแก่ผู้ใช้ได้โดย แสดงบัญชีที่ลงชื่อเข้าใช้แบบรวมศูนย์จากโดเมนที่พวกเขายอมรับ
API คำแนะนำโดเมน
FedCM สามารถใช้เพื่อช่วยให้ผู้ใช้ เข้าสู่ระบบฝ่ายที่เกี่ยวข้องได้ง่ายขึ้น (RP, อ้างถึงเว็บไซต์) โดยใช้ข้อมูลบัญชีที่ระบุตัวตน ผู้ให้บริการ (IdP) แต่ก็มีบางกรณีที่ RP ทราบว่ามีเพียง บัญชีที่เชื่อมโยงกับโดเมนหนึ่งๆ จะได้รับอนุญาตให้เข้าสู่ระบบไซต์ ช่วงเวลานี้ ซึ่งมักพบบ่อยในระดับองค์กรที่ไซต์ที่กำลังเข้าถึง จำกัดเฉพาะโดเมนของบริษัท เพื่อมอบประสบการณ์ที่ดียิ่งขึ้นให้แก่ผู้ใช้ FedCM API อนุญาตให้ RP แสดงเฉพาะบัญชีที่อาจใช้เพื่อเข้าสู่ระบบ RP. เพื่อป้องกันสถานการณ์ที่ผู้ใช้พยายามเข้าสู่ระบบของ RP โดยใช้ บัญชีภายนอกโดเมนบริษัท แต่จะแสดงพร้อมข้อความแสดงข้อผิดพลาดเท่านั้น ในภายหลัง (หรือปิดเสียงที่การเข้าสู่ระบบไม่ทำงาน) เนื่องจากประเภท ไม่มีการใช้บัญชี
เมื่อใช้ Domain Hint API RP จะสามารถระบุพร็อพเพอร์ตี้ domainHint
ใน FedCM API
เพื่อแสดงบัญชีที่ตรงกันสำหรับผู้ใช้ โดย IdP จะต้องระบุ
พร็อพเพอร์ตี้ domain_hints
เป็นส่วนหนึ่งของการตอบกลับจากรายการบัญชี
ปลายทางกับ
ระบุว่าโดเมนใดเชื่อมโยงกับบัญชี ด้วยวิธีนี้ เบราว์เซอร์
สามารถแสดงบัญชีที่ตรงกันโดยไม่ต้องเปิดเผยคำแนะนำโดเมนที่ขอ
IdP
ตัวอย่างการตอบสนอง JSON จากปลายทางของรายการบัญชีจะมีลักษณะเช่นนี้ ดังต่อไปนี้:
{
"accounts": [{
"id": "1234",
"given_name": "John",
"name": "John Doe",
"email": "john_doe@idp.example",
"picture": "https://idp.example/profile/123",
"approved_clients": ["123", "456", "789"],
}, {
"id": "5678",
"given_name": "Johnny",
"name": "Johnny",
"email": "johnny@idp.example",
"picture": "https://idp.example/profile/456"
"approved_clients": ["abc", "def", "ghi"],
"domain_hints": ["corp.example"]
}]
}
RP สามารถเรียกใช้ navigator.credentials.get()
ที่มีพร็อพเพอร์ตี้ domainHint
เพื่อ
กรองบัญชี ตัวอย่างเช่น สมมติว่าผู้ใช้เข้าชม corp-partner.example
และ
ลงชื่อเข้าใช้ด้วยบัญชีจาก corp.example
เว็บไซต์จะเรียกใช้ API เป็น
ดังต่อไปนี้:
return await navigator.credentials.get({
identity: {
providers: [{
configURL: "https://idp.example/manifest.json",
clientId: "abc",
nonce: nonce,
domainHint : "corp.example"
}]
}
});
ค่า domainHint
ไม่ได้ส่งไปยังรายการบัญชี
ปลายทาง
สำหรับการกรองฝั่งเซิร์ฟเวอร์ เนื่องจากอาจเป็นเวกเตอร์การเก็บลายนิ้วมือของ IdP
แต่ Chrome จะส่งคำขอ FedCM ตามปกติและกรองบัญชีออกแทน
ที่ไม่ตรงกับค่า domainHint
ที่ระบุโดย
navigator.credentials.get()
สาย จากนั้น Chrome จะแสดงกล่องโต้ตอบ FedCM ไปยัง
ผู้ใช้ด้วยรายการบัญชีใหม่ วิธีการนี้คล้ายกับ คำแนะนำการเข้าสู่ระบบ
API แต่ทั้ง 2 อย่างนี้
API จะตอบคำถามที่แตกต่างกันไป API คำแนะนำการเข้าสู่ระบบมีเป้าหมายเพื่อตอบคำถาม "ซึ่งเป็น
สำหรับผู้ใช้ที่ฉันต้องการได้อย่างไร" ในขณะที่คำแนะนำโดเมนจะตอบคำถามว่า
บัญชีที่เป็นของบริษัทหรือเซิร์ฟเวอร์นี้ต้องเป็นของบัญชีนี้หรือไม่"
เมื่อใช้ domainHint: "any"
Chrome จะกรองบัญชีที่ไม่มี
โดเมนใดๆ (กล่าวคือ ไม่มีการส่งผ่าน domain_hints
หรือว่างเปล่า) ตัวอย่างเช่น
ซึ่งจะอนุญาตกรณีการใช้งานที่ RP อนุญาตเฉพาะบัญชีที่จัดการในการลงชื่อสมัครใช้
ขั้นตอนได้
เมื่อไม่มีบัญชีที่ตรงกับ domainHint
กล่องโต้ตอบ FedCM จะแสดงข้อความแจ้งให้เข้าสู่ระบบ
ซึ่งอนุญาตให้ผู้ใช้เข้าสู่ระบบบัญชี IdP ที่ตรงกับคำแนะนำที่ขอโดย
RP เมื่อผู้ใช้แตะข้อความแจ้ง หน้าต่างป๊อปอัปจะเปิดขึ้น
URL สำหรับเข้าสู่ระบบที่ระบุไว้ในการกำหนดค่า
ไฟล์ ลิงก์นั้นคือ
ให้ใส่คำแนะนำการเข้าสู่ระบบและพารามิเตอร์การค้นหาของคำแนะนำโดเมนต่อท้าย