Digital Credentials API: ข้อมูลประจำตัวที่ปลอดภัยและเป็นส่วนตัวบนเว็บ

เผยแพร่: 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 API

    try {   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

วิธีแยกวิเคราะห์การตอบกลับที่แน่นอนจะขึ้นอยู่กับโปรโตคอล โดยปกติแล้ว คุณจะต้องดำเนินการต่อไปนี้

  1. ถอดรหัสเพย์โหลดการตอบกลับ วิธีการถอดรหัสจะขึ้นอยู่กับโปรโตคอลที่ใช้ ดูวิธีถอดรหัสเพย์โหลดสำหรับ openid4vp (ใช้ JWE) และ org-iso-mdoc (ใช้การเข้ารหัสคีย์สาธารณะแบบผสม)
  2. ยืนยันลายเซ็นและผู้ออกใบรับรอง โปรดดูรายละเอียดเพิ่มเติมในเอกสารประกอบเกี่ยวกับการยอมรับข้อมูลประจำตัวดิจิทัลทางออนไลน์

หากต้องการดูตัวอย่างโค้ดสำหรับโปรโตคอลต่างๆ โปรดดูโค้ดสำหรับการสาธิต หรือเวอร์ชันที่โฮสต์แบบสด

ยืนยันความน่าเชื่อถือของผู้ออกใบรับรอง

ลายเซ็นการเข้ารหัสของข้อมูลประจำตัวดิจิทัลจะพิสูจน์ว่าข้อมูลประจำตัวนั้นเป็นของจริง อย่างไรก็ตาม นักพัฒนาแอปต้องยืนยันว่าผู้ออกใบรับรองเหมาะสมและเชื่อถือได้สำหรับกรณีการใช้งานเฉพาะของตน ตัวอย่างเช่น หากต้องการให้ส่วนลดแก่นักศึกษามหาวิทยาลัย เว็บไซต์อีคอมเมิร์ซจะต้องมีข้อมูลเข้าสู่ระบบที่ออกโดยมหาวิทยาลัยที่ได้รับการรับรอง และจะปฏิเสธข้อมูลเข้าสู่ระบบที่ลงนามโดยหน่วยงานอื่นๆ วิธีทั่วไปในการยืนยันความน่าเชื่อถือของผู้ออกใบรับรองคือการดูแลรายการผู้ออกใบรับรองที่ได้รับอนุมัติและปฏิเสธผู้ ออกใบรับรองที่ไม่ตรงกัน

เริ่มต้นใช้งาน

พร้อมเริ่มสร้างหรือยัง ข้อมูลที่คุณจำเป็นต้องทราบมีดังนี้

  • ความพร้อมใช้งาน: 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 แล้ว และอยากทราบประสบการณ์การสร้าง ด้วย API นี้จากคุณ ยื่นปัญหา เพื่อแชร์ความคิดเห็นหรือรายงานข้อบกพร่อง