শংসাপত্র ব্যবস্থাপনা API বৈশিষ্ট্য সনাক্তকরণ চেক আপ

সারসংক্ষেপ

WebAuthn ওয়েবে পাবলিক-কী শংসাপত্র ভিত্তিক প্রমাণীকরণ এনে নিরাপত্তা বাড়াতে সাহায্য করে এবং শীঘ্রই ক্রোম, ফায়ারফক্স এবং এজ ( হালনাগাদ বৈশিষ্ট্য সহ ) সমর্থিত হবে। এটি একটি নতুন ধরনের Credential অবজেক্ট যোগ করে, যা, যাইহোক, নির্দিষ্ট শংসাপত্রের ধরনগুলি ব্যবহার করছে এমন বৈশিষ্ট্য-শনাক্ত না করে শংসাপত্র ব্যবস্থাপনা API ব্যবহার করে এমন ওয়েবসাইটগুলিকে ভেঙে দিতে পারে।

আপনি যদি বর্তমানে বৈশিষ্ট্য সনাক্তকরণের জন্য এটি করছেন

if (navigator.credentials && navigator.credentials.preventSilentAccess) {
    // use CM API
}

পরিবর্তে এই কাজ

if (window.PasswordCredential || window.FederatedCredential) {
    // Call navigator.credentials.get() to retrieve stored
    // PasswordCredentials or FederatedCredentials.
}

if (window.PasswordCredential) {
    // Get/Store PasswordCredential
}

if (window.FederatedCredential) {
    // Get/Store FederatedCredential
}

if (navigator.credentials && navigator.credentials.preventSilentAccess) {
    // Call navigator.credentials.preventSilentAccess()
}

উদাহরণ হিসাবে নমুনা কোডে করা পরিবর্তনগুলি দেখুন।

আরো জানতে পড়ুন।

শংসাপত্র ব্যবস্থাপনা API কি?

ক্রেডেনশিয়াল ম্যানেজমেন্ট এপিআই (সিএম এপিআই) ওয়েবসাইটগুলিকে ব্যবহারকারী এজেন্টের শংসাপত্রের দোকানে প্রোগ্রাম্যাটিক অ্যাক্সেস দেয় যাতে কলিং মূলের জন্য ব্যবহারকারীর শংসাপত্রগুলি সংরক্ষণ/পুনরুদ্ধার করা যায়।

বেসিক APIগুলি হল:

  • navigator.credentials.get()
  • navigator.credentials.store()
  • navigator.credentials.create()
  • navigator.credentials.preventSilentAccess()

মূল CM API স্পেসিফিকেশন 2টি শংসাপত্রের ধরন সংজ্ঞায়িত করে:

  • PasswordCredential
  • FederatedCredential

PasswordCredential হল একটি শংসাপত্র যাতে ব্যবহারকারীর আইডি এবং পাসওয়ার্ড থাকে। FederatedCredential হল একটি শংসাপত্র যাতে ব্যবহারকারীর আইডি এবং একটি স্ট্রিং থাকে যা একটি পরিচয় প্রদানকারীকে প্রতিনিধিত্ব করে।

এই 2টি শংসাপত্র সহ, ওয়েবসাইটগুলি করতে পারে:

  • ব্যবহারকারীকে পূর্বে সংরক্ষিত পাসওয়ার্ড-ভিত্তিক বা ফেডারেটেড শংসাপত্র দিয়ে সাইন-ইন করতে দিন যত তাড়াতাড়ি তারা অবতরণ করুন (স্বয়ংক্রিয় সাইন-ইন),
  • ব্যবহারকারী সাইন ইন করেছেন পাসওয়ার্ড-ভিত্তিক বা ফেডারেটেড শংসাপত্র সংরক্ষণ করুন,
  • ব্যবহারকারীর সাইন-ইন শংসাপত্র আপ-টু-ডেট রাখুন (যেমন পাসওয়ার্ড পরিবর্তনের পরে)

WebAuthn কি

WebAuthn (ওয়েব প্রমাণীকরণ) CM API-তে পাবলিক-কী শংসাপত্র যোগ করে। উদাহরণস্বরূপ, এটি ওয়েবসাইটগুলিকে FIDO 2.0 অনুগত প্রমাণীকরণকারী ডিভাইসগুলি ব্যবহার করে দ্বিতীয়-ফ্যাক্টর প্রমাণীকরণ বাস্তবায়নের একটি প্রমিত উপায় দেয়।

একটি প্রযুক্তিগত স্তরে, WebAuthn CM API-কে PublicKeyCredential ইন্টারফেসের সাথে প্রসারিত করে।

সমস্যাটা কি?

পূর্বে আমরা নিম্নলিখিত কোড সহ CM API সনাক্ত করার জন্য বিকাশকারীদের নির্দেশনা দিয়েছি:

if (navigator.credentials && navigator.credentials.preventSilentAccess) {
  // Use CM API
}

But as you can see from the descriptions above, the `navigator.credentials` is
now expanded to support public-key credentials in addition to password
credentials and federated credentials.

The problem is that user agents don't necessarily support all kinds of
credentials. If you continue feature detect using `navigator.credentials`, your
website may break when you are using a certain credential type not supported by
the browser.

**Supported credential types by browsers**
<table class="properties with-heading-tint"><tbody><tr>
<th></th>
<th>PasswordCredential / FederatedCredential</th>
<th>PublicKeyCredential</th>
</tr><tr><th>Chrome
</th><td>Available
</td><td>In development
</td></tr><tr><th>Firefox
</th><td>N/A
</td><td>Aiming to ship on 60
</td></tr><tr><th>Edge
</th><td>N/A
</td><td>Implemented with <a href="https://blogs.windows.com/msedgedev/2016/04/12/a-world-without-passwords-windows-hello-in-microsoft-edge/">older API</a>. New API (navigator.credentials) coming soon.
</td></tr></tbody></table>


## The solution
You can avoid this by modifying feature detection code as follows to explicitly
test for the credential type that you intend to use.

```js
if (window.PasswordCredential || window.FederatedCredential) {
    // Call navigator.credentials.get() to retrieve stored
    // PasswordCredentials or FederatedCredentials.
}

if (window.PasswordCredential) {
    // Get/Store PasswordCredential
}

if (window.FederatedCredential) {
    // Get/Store FederatedCredential
}

if (navigator.credentials && navigator.credentials.preventSilentAccess) {
    // Call navigator.credentials.preventSilentAccess()
}

উদাহরণ হিসাবে নমুনা কোডে করা প্রকৃত পরিবর্তনগুলি দেখুন।

একটি রেফারেন্সের জন্য, WebAuthn এ যোগ করা PublicKeyCredential কিভাবে সনাক্ত করা যায় তা এখানে রয়েছে:

if (window.PublicKeyCredential) {
    // use CM API with PublicKeyCredential added in the WebAuthn spec
}

টাইমলাইন

WebAuthn-এর প্রথম উপলব্ধ বাস্তবায়ন হল Firefox এবং মে 2018 এর প্রথম দিকে স্থিতিশীল হওয়ার পরিকল্পনা করা হয়েছে

অবশেষে

আপনার যদি কোনো প্রশ্ন থাকে, সেগুলিকে @agektmr বা agektmr@chromium.org-এ পাঠান।