เผยแพร่: 3 ตุลาคม 2025
เรายินดีที่จะแจ้งให้ทราบว่าตอนนี้ Chrome 141 ได้เปิดใช้ Digital Credentials API โดยค่าเริ่มต้นแล้ว นอกจากนี้ iOS 26 ยังรองรับ Digital Credentials API ใน Chrome และเบราว์เซอร์อื่นๆ ด้วย API นี้จะช่วยเพิ่มระดับความปลอดภัยและความเป็นส่วนตัวใหม่ให้กับการยืนยันตัวตนบนเว็บ ซึ่งช่วยให้เว็บไซต์มีวิธีมาตรฐานในการขอและรับข้อมูลที่ยืนยันได้ จากผู้ใช้
หลังจากช่วงทดลองใช้ Origin ที่ประสบความสำเร็จ ตอนนี้ Digital Credentials API รองรับทั้งการแสดงข้อมูลเข้าสู่ระบบในอุปกรณ์เครื่องเดียวกันบน Android และการแสดงข้อมูลเข้าสู่ระบบแบบข้ามอุปกรณ์ ใน Chrome บนเดสก์ท็อปแล้ว
ฉากหลัง
การยืนยันตัวตนทางออนไลน์เป็นกระบวนการที่ซับซ้อนมาโดยตลอด ซึ่งมักกำหนดให้ผู้ใช้อัปโหลดการสแกนบัตรประจำตัว ซึ่งมักหมายถึงการแชร์ข้อมูลมากกว่าที่จำเป็น ซึ่งสร้างความกังวลด้านความเป็นส่วนตัวอย่างมากให้กับผู้ใช้ สำหรับนักพัฒนาแอป การดำเนินการนี้ยังสร้างความเสี่ยงด้วย เนื่องจากนักพัฒนาแอปต้องตรวจสอบว่าโซลูชันของตนสามารถประมวลผลและจัดเก็บข้อมูลที่ละเอียดอ่อนซึ่งมักจะไม่สม่ำเสมอในลักษณะที่ปลอดภัยและรักษาความเป็นส่วนตัวได้
ขณะเดียวกัน กฎระเบียบอย่าง eIDAS 2.0 ก็กำหนดให้รัฐบาลต้องจัดหาวิธีการระบุตัวตนแบบดิจิทัลให้แก่ประชาชน กระเป๋าเงินดิจิทัล สำหรับข้อมูลประจำตัวเหล่านี้ต้องสามารถจัดเก็บข้อมูลเข้าสู่ระบบต่างๆ รวมถึงหลักฐานแสดงตัวตนและอายุ ผู้ให้บริการออนไลน์สามารถขอข้อมูลเข้าสู่ระบบเหล่านี้เพื่อยืนยันตัวตนของผู้ใช้ได้
ชุมชนมาตรฐานเว็บใน W3C ได้พัฒนาโซลูชันเพื่อตอบสนองทั้งความต้องการด้านความเป็นส่วนตัวของผู้ใช้และความต้องการของนักพัฒนาซอฟต์แวร์ในการยืนยันข้อมูลผู้ใช้ โดยตระหนักถึงศักยภาพของข้อมูลประจำตัวดิจิทัล API ข้อมูลประจำตัวดิจิทัล Digital Credentials API มีเป้าหมายที่จะแก้ปัญหานี้ด้วยการเปิดตัวอินเทอร์เฟซในตัวสำหรับ ยืนยันข้อมูลผู้ใช้ ซึ่งจะช่วยปรับปรุงความปลอดภัย ความเป็นส่วนตัว และประสบการณ์ของผู้ใช้เมื่อเทียบกับ ทางเลือกอื่นๆ API นี้ช่วยให้ผู้ใช้ไม่ต้องอัปโหลดเอกสารที่ละเอียดอ่อน เช่น สแกนบัตรประจำตัว ไปยังเว็บไซต์หลายแห่งอีกต่อไป แต่เว็บไซต์สามารถสร้างความน่าเชื่อถือกับผู้ใช้ได้โดยการขอเฉพาะข้อมูลที่เฉพาะเจาะจงและมีการลงนามแบบเข้ารหัสที่ต้องการจากผู้ออกที่เชื่อถือได้
ฟีเจอร์หลัก
Digital Credentials API สร้างขึ้นโดยอิงตามหลักการสำคัญ 3 ประการ ได้แก่ ความเป็นส่วนตัว การรองรับข้ามแพลตฟอร์ม และ การกำหนดมาตรฐาน
ความเป็นส่วนตัว
Digital Credentials API ช่วยเพิ่มความเป็นส่วนตัวและความปลอดภัยบนโลกออนไลน์ ซึ่งช่วยให้ผู้ใช้แสดงบัตรประจำตัวดิจิทัลจากกระเป๋าเงินบนอุปกรณ์เคลื่อนที่ต่อเว็บไซต์เพื่อยืนยันข้อเท็จจริงที่เฉพาะเจาะจงได้โดยไม่ต้องเปิดเผยข้อมูลที่ละเอียดอ่อนพื้นฐาน ตัวอย่างเช่น API สามารถยืนยันว่าผู้ใช้มีอายุมากกว่า 18 ปีโดยไม่ต้องเปิดเผยวันเกิดแบบเต็ม หลักการ "การเปิดเผยข้อมูลแบบเลือก" นี้ช่วยให้มั่นใจได้ว่าเว็บไซต์จะได้รับเฉพาะ ข้อมูลที่จำเป็นขั้นต่ำเท่านั้น
นอกจากนี้ Digital Credentials API ยังใช้ได้กับโปรโตคอล Zero Knowledge Proofs (ZKP) เช่น Longfellow ZK ของ Google ซึ่งช่วยให้มั่นใจในความเป็นส่วนตัวของผู้ใช้โดยการส่งคืนการพิสูจน์การเข้ารหัสลับ ว่าการยืนยันตัวตนหนึ่งๆ เป็นจริงโดยไม่ต้องเปิดเผยข้อมูลอื่นๆ
การรองรับข้ามแพลตฟอร์ม
Digital Credentials API มีเป้าหมายเพื่อรองรับแพลตฟอร์มต่างๆ เพื่อให้ผู้ใช้สามารถนำเสนอข้อมูลที่ยืนยันแล้วในอุปกรณ์ต่างๆ ได้อย่างสะดวก
ใน Android: มีอินเทอร์เฟซผู้ใช้ในตัวที่ช่วยให้ผู้ใช้เลือกข้อมูลเข้าสู่ระบบจากแอปกระเป๋าเงินที่ติดตั้งได้
บนเดสก์ท็อป: ผู้ใช้สามารถนำเสนอข้อมูลเข้าสู่ระบบจากกระเป๋าเงินบนอุปกรณ์เคลื่อนที่ไปยังเว็บไซต์ในเบราว์เซอร์บนเดสก์ท็อปได้ การสแกนคิวอาร์โค้ดจะช่วยให้ระบบสร้างการเชื่อมต่อที่ปลอดภัย มีการเข้ารหัสจากต้นทางถึงปลายทาง และป้องกันฟิชชิงระหว่างเดสก์ท็อปกับอุปกรณ์เคลื่อนที่ การเชื่อมต่อนี้ใช้โปรโตคอล CTAP เพื่อยืนยันความใกล้เคียงของผู้ใช้ผ่าน BLE เพื่อให้แน่ใจว่าผู้ใช้มีตัวตนจริงและควบคุม อุปกรณ์ทั้ง 2 เครื่องได้
การปรับให้เป็นมาตรฐาน
ความสามารถในการทำงานร่วมกันเป็นสิ่งสำคัญ ใน Chrome นั้น Digital Credentials API เป็นแพลตฟอร์มโปรโตคอลที่ไม่ขึ้นต่อกัน และใช้ได้กับโปรโตคอลการนำเสนอต่างๆ เช่น OpenID4VP และ Annex C ของ ISO 18013-7 นอกจากนี้ Apple ยังได้เปิดตัวการรองรับ Digital Credentials API จาก Safari 26.0 ด้วย
นอกจากนี้ Digital Credentials API ยังสร้างขึ้นจากการรองรับการจัดการข้อมูลเข้าสู่ระบบในตัวของ Android และระบบนิเวศของกระเป๋าเงินที่รองรับซึ่งกำลังเติบโต Google Wallet เป็นผู้ใช้กลุ่มแรกๆ โดยมี การรองรับจาก Samsung Wallet และ 1Password ที่กำลังจะมา
มีอะไรใหม่ตั้งแต่ช่วงทดลองใช้ Origin
สำหรับผู้ที่เข้าร่วมช่วงทดลองใช้จากต้นทางก่อนหน้านี้
คุณจะเห็นว่า Digital Credentials API ได้ย้ายจาก navigator.identity.get()
ไปยัง
navigator.credentials.get()
เพื่อให้สอดคล้องกับความพยายามในการรวมข้อมูลประจำตัวในวงกว้างด้วย
Credential Management API
นอกจากนี้ เรายังเปลี่ยนชื่อพารามิเตอร์ providers
เป็น requests
และเปลี่ยนชื่อ request
เป็น data
ด้วย
การใช้งาน
การผสานรวม Digital Credentials API มี 2 ขั้นตอนหลักๆ ได้แก่ การตรวจหาฟีเจอร์และการขอ ข้อมูลเข้าสู่ระบบ นักพัฒนาแอปควรใช้ตรรกะที่กำหนดเองเพื่อพิจารณาว่าแอปพลิเคชันของตนใช้ข้อมูลเข้าสู่ระบบได้หรือไม่
การตรวจหาฟีเจอร์
ก่อนที่จะแสดงปุ่ม "ยืนยันด้วยข้อมูลประจำตัวดิจิทัล" ให้ตรวจสอบว่า Digital Credentials API พร้อมใช้งานในเบราว์เซอร์ของผู้ใช้หรือไม่
if (typeof DigitalCredential !== "undefined") {
// Digital Credentials API is supported
} else {
// Digital Credentials API is not supported
}
ขอข้อมูลเข้าสู่ระบบ
การขอข้อมูลเข้าสู่ระบบเกี่ยวข้องกับการเรียกไปยัง navigator.credentials.get()
โดยมีพารามิเตอร์ digital
ภายในประเภทข้อมูลเข้าสู่ระบบดิจิทัล ให้เพิ่มrequests
อาร์เรย์ที่มี
DigitalCredentialGetRequest
พร้อมพารามิเตอร์พื้นฐานต่อไปนี้
protocol
: ระบุโปรโตคอลการแลกเปลี่ยนด้วยสตริง เช่น"openid4vp"
หรือ"org-iso-mdoc"
ตรวจหาว่าเบราว์เซอร์รองรับโปรโตคอลหรือไม่โดยทำดังนี้if (DigitalCredential.userAgentAllowsProtocol("example-protocol")) { // Create a request with this protocol } else { // Protocol is not supported }
data
: ออบเจ็กต์ ที่มีพารามิเตอร์ที่แอปกระเป๋าเงินดิจิทัลยอมรับสำหรับโปรโตคอลที่ระบุ สำหรับ"openid4vp"
, พารามิเตอร์จะกำหนดไว้ใน OpenID สำหรับการนำเสนอที่ตรวจสอบได้ (OID4VP) สำหรับข้อกำหนด W3C Digital Credentials APItry { const digitalCredential = await navigator.credentials.get({ digital: { requests: [{ protocol: "openid4vp-v1-unsigned", data: { response_type: "vp_token", nonce: "[some-nonce]", client_metadata: {...}, dcql_query: {...} } }] } }); // Decrypt payload respons and verify credentials on the backend const response = await fetch("/verify", { method: "POST", body: JSON.stringify(digitalCredential.data), headers: { 'Content-Type': 'application/json' } }); } catch (e) { // Handle errors, such as the user canceling the request console.error(e); }
เช่น หากต้องการขอนามสกุล ชื่อ และค่าบูลีนของผู้ใช้ที่ระบุว่าผู้ใช้มีอายุเกิน 21 ปีหรือไม่ คุณสามารถระบุเพย์โหลดต่อไปนี้
{
protocol: 'openid4vp-v1-unsigned',
data: {
response_type: 'vp_token',
nonce: '[some-nonce]',
// Contains the Verifier metadata values, including supported credential formats and response encryption public key
client_metadata: {
// Supported credential formats. Refer to the documentation for specific values
vp_formats_supported: {...},
// Public key(s). Refer to the documentation for more detail.
jwks: {...}
},
dcql_query: {
// A wallet will try to find credentials it holds that match these definitions.
credentials: [
{
// A locally unique identifier for this credential definition within the query.
id: "cred_vc",
format: "dc+sd-jwt",
meta: {
// 'vct_values' specifies the Verifiable Credential allowed type.
// In this case, it's a European Digital Identity (EUDI) Personal Identification Data (PID) credential.
vct_values: [
"urn:eudi:pid:1"
]
},
// 'claims' is an array of specific data that's being requested.
claims: [
{
// The path ["age_equal_or_over", "18"] corresponds to accessing `credential.age_equal_or_over['18']`.
path: [
"age_equal_or_over",
"18"
]
}
]
}
]
}
}
}
ในตัวอย่างนี้ client_metadata
ต้องระบุรายการรูปแบบที่รองรับ โปรดดูค่าที่ใช้ได้ใน
ข้อกำหนด
ค่าไม่บังคับjwks
ที่ตั้งค่าไว้ใน client_metadata
ต้องมีคีย์สาธารณะที่ใช้สำหรับการเข้ารหัสการตอบกลับ คุณยังดูตัวอย่างเพิ่มเติมได้ในโค้ดสาธิต
ตัวอย่างเพย์โหลดการตอบกลับที่เข้ารหัสของออบเจ็กต์ DigitalCredential มีดังนี้
{
// This is an example for a response using an OpenID4VP protocol.
// The format of the 'data' object will differ for other protocols.
"protocol": "openid4vp-v1-unsigned",
"data": {
// To decrypt this JWE payload, use the private key.
// The decrypted payload will be a JSON object containing the
// Verifiable Presentation in the 'vp_token' claim.
"response": "[jwe-token]"
}
}
ในตัวอย่างนี้ ระบบจะขอข้อมูลเข้าสู่ระบบด้วยopenid4vp-v1-unsigned
โปรโตคอล และการตอบกลับจะมี response
ในพร็อพเพอร์ตี้ data
วิธีแยกวิเคราะห์การตอบกลับที่แน่นอนจะขึ้นอยู่กับโปรโตคอล โดยปกติแล้ว คุณจะต้องดำเนินการต่อไปนี้
- ถอดรหัสเพย์โหลดการตอบกลับ วิธีการถอดรหัสจะขึ้นอยู่กับโปรโตคอลที่ใช้ ดูวิธีถอดรหัสเพย์โหลดสำหรับ
openid4vp
(ใช้ JWE) และorg-iso-mdoc
(ใช้การเข้ารหัสคีย์สาธารณะแบบผสม) - ยืนยันลายเซ็นและผู้ออกใบรับรอง โปรดดูรายละเอียดเพิ่มเติมในเอกสารประกอบเกี่ยวกับการยอมรับข้อมูลประจำตัวดิจิทัลทางออนไลน์
หากต้องการดูตัวอย่างโค้ดสำหรับโปรโตคอลต่างๆ โปรดดูโค้ดสำหรับการสาธิต หรือเวอร์ชันที่โฮสต์แบบสด
ยืนยันความน่าเชื่อถือของผู้ออกใบรับรอง
ลายเซ็นการเข้ารหัสของข้อมูลประจำตัวดิจิทัลจะพิสูจน์ว่าข้อมูลประจำตัวนั้นเป็นของจริง อย่างไรก็ตาม นักพัฒนาแอปต้องยืนยันว่าผู้ออกใบรับรองเหมาะสมและเชื่อถือได้สำหรับกรณีการใช้งานเฉพาะของตน ตัวอย่างเช่น หากต้องการให้ส่วนลดแก่นักศึกษามหาวิทยาลัย เว็บไซต์อีคอมเมิร์ซจะต้องมีข้อมูลเข้าสู่ระบบที่ออกโดยมหาวิทยาลัยที่ได้รับการรับรอง และจะปฏิเสธข้อมูลเข้าสู่ระบบที่ลงนามโดยหน่วยงานอื่นๆ วิธีทั่วไปในการยืนยันความน่าเชื่อถือของผู้ออกใบรับรองคือการดูแลรายการผู้ออกใบรับรองที่ได้รับอนุมัติและปฏิเสธผู้ ออกใบรับรองที่ไม่ตรงกัน
เริ่มต้นใช้งาน
พร้อมเริ่มสร้างหรือยัง ข้อมูลที่คุณจำเป็นต้องทราบมีดังนี้
- ความพร้อมใช้งาน: Chrome 141 ขึ้นไปจะเปิดใช้ Digital Credentials API โดยค่าเริ่มต้นในแพลตฟอร์มต่างๆ
- ข้อกำหนดเบื้องต้น: ผู้ใช้ต้องมีอุปกรณ์ที่เข้ากันได้ เช่น Android ที่ใช้บริการ Google Play เวอร์ชัน 24.0 ขึ้นไป หรืออุปกรณ์ iOS ที่ใช้เวอร์ชัน 26 ขึ้นไป อุปกรณ์ต้อง มีแอปพลิเคชันกระเป๋าเงินดิจิทัลที่ติดตั้งไว้ซึ่งรองรับ Digital Credentials API เช่น Google Wallet หรือกระเป๋าเงินดิจิทัลเวอร์ชันเดโม
- ลองใช้เดโม: วิธีที่ดีที่สุดในการทำความเข้าใจประสบการณ์ของผู้ใช้และทดสอบการติดตั้งใช้งานคือการลองใช้เดโมแบบสดที่ https://verifier.multipaz.org ด้วย Chrome 141 ขึ้นไป
แหล่งข้อมูล
ดูข้อมูลเพิ่มเติมได้ที่แหล่งข้อมูลต่อไปนี้
- คู่มือนักพัฒนาซอฟต์แวร์: Digital Credentials API
- ข้อกำหนด: เอกสารรับรองดิจิทัลของ W3C
- การสนับสนุน Android: การสนับสนุน Android สำหรับข้อมูลประจำตัวดิจิทัล
แชร์ความคิดเห็น
ตอนนี้เราได้เปิดตัว Digital Credentials API แล้ว และอยากทราบประสบการณ์การสร้าง ด้วย API นี้จากคุณ ยื่นปัญหา เพื่อแชร์ความคิดเห็นหรือรายงานข้อบกพร่อง