معرفی نسخه آزمایشی مبدا Digital Credentials API

یک آزمایش اولیه برای Digital Credentials API از Chrome 128 شروع می‌شود. Digital Credentials API یک API جدید پلتفرم وب است که به وب‌سایت‌ها اجازه می‌دهد به طور انتخابی اطلاعات قابل تأییدی را درباره کاربر از طریق اعتبارنامه‌های دیجیتالی مانند گواهینامه رانندگی یا کارت شناسایی ملی که در یک کارت شناسایی ذخیره شده است درخواست کنند. کیف پول دیجیتال

پس زمینه

هویت دیجیتال دنیای واقعی در حال تبدیل شدن به واقعیت است و بسیاری از نهادهای دولتی و خصوصی شروع به صدور اعتبار دیجیتالی متصل به دستگاه کرده اند. برای مثال، گواهینامه‌های رانندگی تلفن همراه و شناسه‌های تلفن همراه در ایالت‌های منتخب ایالات متحده (مانند آریزونا، کالیفرنیا، کلرادو، جورجیا و مریلند) اکنون می‌توانند در اختیار برنامه‌های کیف پول دیجیتال مانند Google Wallet در دستگاه‌های تلفن همراه قرار گیرند. مقررات مربوط به پذیرش اعتبار دیجیتال برای تأیید برخی از تأییدات آنلاین نیز در حال ظهور است و eIDAS 2.0 یک نمونه است.

گواهینامه رانندگی موبایل در Google Wallet
گواهینامه رانندگی موبایل در Google Wallet.

ویژگی‌های یک اعتبار دیجیتال به فرمت آن بستگی دارد، اگرچه معمولاً عبارتند از:

  • امنیت و حریم خصوصی پیشرفته : استفاده از روش‌های رمزگذاری پیشرفته و احراز هویت قوی به محافظت از داده‌های حساس و تضمین دسترسی ایمن کمک می‌کند. به عنوان مثال، ارائه یک اعتبار معمولاً در پشت تأیید هویت کاربر از طریق برنامه کیف پول محافظت می شود.
  • افشای انتخابی : طرف‌های متکی (RP) می‌توانند اطلاعات انتخابی را از اعتبارنامه درخواست کنند و به کاربران این امکان را می‌دهند که داده‌های به اشتراک گذاشته‌شده را به آنچه برای مورد استفاده لازم است محدود کنند. برای مثال، می‌توان بدون فاش کردن تاریخ تولد کاربر، به اشتراک گذاشت که آیا کاربر بالای 18 سال سن دارد یا خیر.
  • قابلیت همکاری : اعتبارنامه باید مطابق با استانداردهای بین المللی باشد، که امکان سازگاری در سیستم ها و کشورهای مختلف را فراهم می کند و پذیرش فرامرزی را تسهیل می کند.
  • قابلیت تأیید : داده های اعتبار به اشتراک گذاشته شده به صورت دیجیتالی توسط صادرکننده امضا می شود. RP می تواند این امضا را تأیید کند تا صحت داده ها را تأیید کند.

به دلیل ماهیت قابل تأیید اعتبارنامه های دیجیتال، آنها می توانند موارد استفاده مانند موارد زیر را فعال کنند:

  • تأیید سن: قبل از ارائه محتوای دارای محدودیت سنی یا خرید موارد دارای محدودیت سنی، سن فرد را برای تأیید سن درخواست کنید.
  • تأیید هویت: درخواست نام و نشانی برای تأیید هویت یک فرد برای مطابقت قانونی یا جلوگیری از تقلب.
  • بررسی امتیازات رانندگی: واجد شرایط بودن یک فرد برای رانندگی را تأیید کنید (مثلاً هنگام اجاره ماشین).

از آنجایی که وب‌سایت‌ها ارتباط مستقیم با برنامه‌های کیف پول تلفن همراه (مانند استفاده از طرح‌های URL سفارشی) را برای درخواست اعتبار دیجیتال برای موارد استفاده مختلف آغاز کرده‌اند، مرورگرها فرصتی را می‌بینند تا این تعامل را ایمن‌تر، مقاوم‌تر در برابر سوءاستفاده و استفاده آسان‌تر از طریق یک هدف داشته باشند. API ساخته شده است.

معرفی Digital Credentials API

Digital Credentials API یک API پلتفرم وب جدید است که به وب‌سایت‌های RP اجازه می‌دهد تا از برنامه‌های کیف پول ارائه اعتبار دیجیتال را درخواست کنند. API در کروم به‌عنوان نسخه آزمایشی اصلی از Chrome 128 در دسترس است.

API آگنوستیک پروتکل است و به RP اجازه می دهد تا پروتکلی را بر اساس الزامات خود مشخص کند. هنگامی که یک RP درخواستی را ارائه می کند، مرورگر درخواست را به سیستم عامل تلفن همراه می فرستد که اعتبار منطبق را در برنامه های کیف پول نصب شده جستجو می کند. اگر موردی پیدا شد، سیستم عامل موبایل از کاربر می خواهد یکی را انتخاب کند و درخواست را به کیف پول انتخاب شده توسط کاربر ارسال می کند. پس از احراز هویت محلی، کیف پول پاسخی حاوی اطلاعات اعتبار درخواستی را برمی‌گرداند.

نمودار ارتباط بین مرورگر، کیف پول و طرف متکی.

Chrome ابتدا از API در Chrome در Android برای درخواست اعتبار از برنامه های کیف پول در همان دستگاه پشتیبانی می کند. در آینده، ما قصد داریم از دسک‌تاپ Chrome پشتیبانی کنیم تا اعتبارنامه‌های بین دستگاهی را از یک دستگاه تلفن همراه دیگر درخواست کنیم.

در زمان راه‌اندازی، Google Wallet با Digital Credentials API یکپارچه می‌شود و به کسب‌وکارها و سازمان‌های منتخب این امکان را می‌دهد تا درخواستی را برای کاربران ارائه کنند تا شناسه خود را به صورت آنلاین از طریق Chrome در Android ارائه کنند و صحت داده‌های ارسال‌شده را با بررسی امضای رمزنگاری تأیید کنند. برای شرکت، این فرم را برای ابراز علاقه به پذیرش شناسه های دیجیتال از Google Wallet پر کنید.

این API همچنین به زودی توسط حساب‌های Google برای تأیید تاریخ تولد برخی از کاربران استفاده خواهد شد. کاربرانی که در یک ایالت پشتیبانی‌شده ایالات متحده زندگی می‌کنند، می‌توانند از شناسه ایالتی یا گواهینامه رانندگی خود که در برنامه‌های کیف پول موجود (از جمله Google Wallet) ارائه شده است استفاده کنند تا فقط تاریخ تولد خود را بدون به اشتراک گذاشتن سایر جزئیات هویت خود با Google به اشتراک بگذارند. این به کاربران این امکان را می‌دهد تا با حفظ حریم خصوصی به Google نشان دهند که شرایط سنی مرتبط با حساب را برآورده می‌کنند.

آن را امتحان کنید

برای امتحان Digital Credentials API دستورالعمل ها را دنبال کنید:

  1. برنامه کیف پول دمو را طبق دستورالعمل های توضیح داده شده در این صفحه نصب کنید.
  2. برنامه IC Wallet را راه اندازی کنید و یک گواهینامه رانندگی تلفن همراه (mDL) دمو ارائه کنید.
    • روی دکمه منو ضربه بزنید و Add Self Signed Document را انتخاب کنید.
  3. با Chrome 128 یا جدیدتر به https://digital-credentials.dev بروید.
  4. درخواست اعتبارنامه (OpenID4VP) را فشار دهید.

نسخه ی نمایشی را که از https://digital-credentials.dev استفاده می کند، یک وب سایت آزمایشی برای توسعه دهندگان برای ایجاد درخواست های اعتبار برای ویژگی های مختلف، بررسی کنید:

در اینجا نحوه عملکرد نسخه ی نمایشی مرحله به مرحله آمده است:

1. کاربر در وب‌سایت طرف متکی قرار می‌گیرد و از او خواسته می‌شود نام خانوادگی، نام داده شده و تضمین سن بالای 21 سال خود را ارائه دهد.
2. مرورگر تأیید می کند که آیا کاربر قصد دارد هر گونه اعتبار دیجیتالی را با این وب سایت به اشتراک بگذارد.
3. سیستم عامل اطلاعات مورد درخواست و اعتبارنامه های واجد شرایط را نشان می دهد که می تواند با درخواست کاربر برای انتخاب و تکمیل درخواست مطابقت داشته باشد.
4. کیف پول به صورت محلی کاربر را با باز کردن قفل صفحه تأیید می کند.

5. اعتبار دیجیتال درخواستی اکنون به وب سایت طرف متکی ارسال می شود.

نحوه عملکرد API

Digital Credentials API بر اساس Credential Management API ساخته شده است، اما از یک سطح API مستقل: navigator.identity . با فراخوانی navigator.identity.get() ، وب سایت می تواند یک اعتبار دیجیتال ذخیره شده در یک برنامه کیف پول تلفن همراه را درخواست کند. .

// Gets a CBOR with specific fields out of mobile driver's license as an mdoc
const controller = new AbortController();
const {protocol, data} = await navigator.identity.get({
  signal: controller.signal,
  digital: {
    providers: [{
      protocol: "openid4vp",
      request: {
        response_type: "vp_token",
        nonce: "n-0S6_WzA2Mj",
        client_metadata: {...},
        presentation_definition: {...}
      }
    }],
  }
});

سطح پایه API شبیه به navigator.credentials.get() است، با این تفاوت که فقط نوع اعتبارنامه "digital" را می پذیرد. در نوع اعتبار دیجیتال، آرایه providers را اضافه کنید که حاوی IdentityRequestProvider با پارامترهای اساسی زیر است:

بار نمونه به نوع اعتبار دیجیتال با استفاده از OID4VP:

{
  protocol: 'openid4vp',
  request: {
    response_type: 'vp_token',
    nonce: 'gf69kepV+m5tGxUIsFtLi6pwg=',
    client_metadata: {},
    presentation_definition: {     
      id: 'mDL-request-demo',
      input_descriptors: [{
        id: "org.iso.18013.5.1.mDL",
        format: {
          mso_mdoc: {
            alg: ["ES256"]
          }
        },
        constraints: {
          limit_disclosure: "required",
          fields: [
            {
              path: ["$['org.iso.18013.5.1']['family_name']"],
              intent_to_retain: false
            }, {
              path: ["$['org.iso.18013.5.1']['given_name']"],
              intent_to_retain: false
            }, {
              path: ["$['org.iso.18013.5.1']['age_over_21']"],
              intent_to_retain: false
            }
          ]
        }
      }],
    }
  }
}

با این درخواست، کیف‌پول‌هایی که دارای mDL در دستگاه هستند، مجموعه‌ای از اعتبارنامه‌های قابل تأیید را ارائه می‌کنند که حاوی:

  • نام خانوادگی کاربر
  • نام داده شده کاربر
  • یک مقدار بولی که نشان می دهد کاربر بالای 21 سال سن دارد یا خیر.

در اینجا یک نمونه بار پاسخ است:

{
  data: '{\n  "vp_token": "o2d2ZXJzaW9uYz..."\n}'
  id: '',
  protocol: 'openid4vp',
  type: 'digital'
}

در این مثال، اعتبار با پروتکل "openid4vp" درخواست شد و پاسخ حاوی "vp_token" در ویژگی data است. لطفاً OpenID for Verifiable Presentation (OID4VP) را برای مشخصات API Digital Credentials W3C ببینید تا نحوه تجزیه پاسخ و تأیید اعتبار را بیاموزید.

Digital Credentials API در Chrome در Android به عنوان نسخه آزمایشی اصلی پشتیبانی می‌شود. Chrome روی دسک‌تاپ و iOS در حال حاضر از آن پشتیبانی نمی‌کند. برای سایر موتورهای مرورگر، مکالمات فعال از طریق گروه جامعه انکوباتور وب W3C تسهیل می شود.

در آزمایش مبدا شرکت کنید

برای توسعه، می‌توانید با روشن کردن پرچم Chrome chrome://flags#web-identity-digital-credentials در Chrome 128 یا جدیدتر، Digital Credentials API را به صورت محلی فعال کنید.

این ویژگی به صورت آزمایشی اصلی نیز موجود است. آزمایش‌های مبدأ به شما امکان می‌دهد ویژگی‌های جدید را امتحان کنید و در مورد قابلیت استفاده، کاربردی بودن و کارایی آن‌ها به جامعه استانداردهای وب بازخورد بدهید. برای اطلاعات بیشتر، شروع به کارآزمایی‌های مبدا را ببینید. برای ثبت نام در این یا دیگر آزمایش اولیه، از صفحه ثبت نام دیدن کنید.

  1. برای مبدا خود یک نشانه درخواست کنید .
  2. توکن را به صفحات خود اضافه کنید. دو راه برای انجام آن وجود دارد:
    • یک تگ origin-trial <meta> به سر هر صفحه اضافه کنید. برای مثال، ممکن است چیزی شبیه به این باشد: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
    • اگر می‌توانید سرور خود را پیکربندی کنید، می‌توانید با استفاده از سرآیند Origin-Trial HTTP، توکن را نیز اضافه کنید. سرصفحه پاسخ حاصل باید چیزی شبیه به این باشد: Origin-Trial: TOKEN_GOES_HERE.

بازخورد را به اشتراک بگذارید

اگر بازخوردی درباره Digital Credentials API دارید، آن را به ردیاب اختصاصی مشکل Chromium ارسال کنید.