تاریخ انتشار: 3 اکتبر 2025
ما مشتاقیم اعلام کنیم که Digital Credentials API اکنون به طور پیش فرض از Chrome 141 فعال شده است. علاوه بر این، iOS 26 پشتیبانی از Digital Credentials API را به Chrome و سایر مرورگرها اضافه می کند. این API سطح جدیدی از امنیت و حریم خصوصی را برای تأیید هویت در وب به ارمغان می آورد و روشی استاندارد را برای وب سایت ها برای درخواست و دریافت اطلاعات قابل تأیید از کاربران امکان پذیر می کند.
پس از یک آزمایش اولیه موفق، Digital Credentials API اکنون هم از ارائه اعتبار یک دستگاه در Android و هم از ارائه بین دستگاهی در Chrome رومیزی پشتیبانی می کند.
پس زمینه
تأیید هویت آنلاین تاکنون یک فرآیند پیچیده بوده است، که اغلب کاربران را ملزم به آپلود اسکن شناسه های خود می کند. این عمل اغلب به معنای به اشتراک گذاری داده های بیشتر از حد ضروری است که نگرانی های قابل توجهی را در مورد حفظ حریم خصوصی برای کاربران ایجاد می کند. برای توسعه دهندگان، این خطر نیز ایجاد می کند، زیرا آنها باید اطمینان حاصل کنند که راه حل آنها قادر به پردازش و ذخیره داده های حساس اغلب غیریکنواخت به روشی ایمن و حفظ حریم خصوصی است.
در عین حال، مقرراتی مانند eIDAS 2.0 موظف است که دولت ها ابزارهای شناسایی دیجیتالی را برای عموم فراهم کنند. این کیفپولهای هویت دیجیتال باید دارای اعتبارنامههای مختلف از جمله مدرک هویت و سن باشند. ارائه دهندگان خدمات آنلاین می توانند این اعتبارنامه ها را برای تأیید هویت کاربر درخواست کنند.
جامعه استانداردهای وب در W3C با درک پتانسیل اعتبارنامه های دیجیتال برای برآورده کردن خواسته های کاربر برای حفظ حریم خصوصی و نیازهای توسعه دهندگان برای تأیید داده های کاربر، راه حلی را ایجاد کرده است: Digital Credentials API . Digital Credentials API با معرفی یک رابط داخلی برای تأیید اطلاعات کاربر، که امنیت، حریم خصوصی و تجربه کاربر را در مقایسه با گزینههای جایگزین بهبود میبخشد، به این مشکل رسیدگی میکند. با استفاده از این API، کاربران دیگر نیازی به آپلود اسناد حساس مانند اسکن ID در چندین وب سایت ندارند. در عوض، وبسایتها میتوانند با درخواست تنها دادههای خاص و دارای امضای رمزنگاریشده از صادرکنندگان مورد اعتماد، اعتماد کاربران خود را ایجاد کنند.
ویژگی های اصلی
Digital Credentials API بر اساس سه اصل اصلی ساخته شده است: حریم خصوصی، پشتیبانی از پلتفرم های مختلف و استانداردسازی.
حریم خصوصی
Digital Credentials API حریم خصوصی و امنیت آنلاین را افزایش می دهد. این به کاربران اجازه می دهد تا یک شناسه دیجیتالی را از کیف پول تلفن همراه خود به وب سایت ها ارائه کنند تا حقایق خاص را بدون افشای داده های حساس اساسی تأیید کنند. به عنوان مثال، API می تواند تأیید کند که یک کاربر بالای 18 سال دارد بدون اینکه تاریخ تولد کامل او فاش شود. این اصل "افشای انتخابی" تضمین می کند که وب سایت ها فقط حداقل اطلاعات لازم را دریافت می کنند.
Digital Credentials API همچنین با پروتکلهای Zero Knowledge Proofs (ZKPs) مانند Longfellow ZK Google سازگار است که با بازگرداندن یک مدرک رمزنگاری مبنی بر صحت ادعای هویت خاص بدون افشای هیچ اطلاعات دیگری، حریم خصوصی کاربر را تضمین میکند.
پشتیبانی از پلتفرم های مختلف
هدف Digital Credentials API پشتیبانی از پلتفرم های مختلف است تا کاربران بتوانند به راحتی اطلاعات تایید شده را در دستگاه ها ارائه دهند.
در Android: یک رابط کاربری داخلی را ارائه می دهد که به کاربران امکان می دهد اعتبارنامه ها را از برنامه کیف پول نصب شده خود انتخاب کنند.
روی دسکتاپ: کاربران می توانند اعتبارنامه ها را از کیف پول تلفن همراه خود به یک وب سایت در مرورگر دسکتاپ خود ارائه دهند. با اسکن یک کد QR، سیستم یک اتصال امن، رمزگذاری شده سرتاسر و مقاوم در برابر فیشینگ بین دسکتاپ و دستگاه تلفن همراه برقرار می کند. این اتصال از پروتکل CTAP برای تأیید نزدیکی کاربر از طریق BLE استفاده میکند و از حضور فیزیکی و کنترل هر دو دستگاه اطمینان میدهد.
استانداردسازی
قابلیت همکاری کلیدی است. در Chrome، Digital Credentials API مستقل از پلتفرم پروتکل است و با پروتکلهای ارائه مختلف، به عنوان مثال، OpenID4VP و پیوست C ISO 18013-7 سازگار است. اپل همچنین پشتیبانی از Digital Credentials API را از Safari 26.0 معرفی کرده است.
علاوه بر این، Digital Credentials API مبتنی بر پشتیبانی داخلی مدیریت اعتبار در اندروید و اکوسیستم رو به رشد کیف پولهای سازگار است. Google Wallet اولین پذیرنده است، با پشتیبانی از Samsung Wallet و 1Password در راه است.
از زمان آزمایشی Origin چه چیز جدیدی وجود دارد؟
برای کسانی که در آزمایش اولیه اولیه ما شرکت کردهاند، متوجه خواهید شد که Digital Credentials API از navigator.identity.get()
به navigator.credentials.get()
منتقل شده است و آن را با تلاش گستردهتر یکپارچهسازی هویت با API مدیریت اعتبار همسو میکند. علاوه بر این، پارامتر providers
به requests
و request
به data
تغییر نام داده شده است.
پیاده سازی
یکپارچه سازی Digital Credentials API شامل دو مرحله اصلی است: شناسایی ویژگی و درخواست اعتبار. توسعه دهندگان همچنین باید منطق سفارشی را پیاده سازی کنند تا تعیین کنند که آیا برنامه آنها می تواند از اعتبارنامه ها استفاده کند یا خیر.
تشخیص ویژگی
قبل از اینکه دکمه «تأیید با اعتبار دیجیتال» را نشان دهید، بررسی کنید که آیا 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) برای مشخصات API اعتبار دیجیتال W3C تعریف شدهاند.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
است.
روش دقیق تجزیه پاسخ به پروتکل بستگی دارد. شما معمولاً نیاز دارید:
- محموله پاسخ را رمزگشایی کنید . روش رمزگشایی به پروتکل مورد استفاده بستگی دارد. نحوه رمزگشایی بار برای
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 Digital Credentials
- پشتیبانی اندروید: پشتیبانی اندروید از Digital Credentials
بازخورد خود را به اشتراک بگذارید
اکنون که Digital Credentials API ارسال شده است، مایلیم در مورد ایجاد تجربه شما با آن بشنویم. برای به اشتراک گذاشتن بازخورد خود یا گزارش هر گونه اشکال، مشکلی را ثبت کنید .