একটি নিরাপদ পেমেন্ট নিশ্চিতকরণ নিবন্ধন করুন

একটি লেনদেনে সিকিউর পেমেন্ট কনফার্মেশন (SPC) ব্যবহার করতে, গ্রাহককে প্রথমে একটি প্রমাণীকরণকারী নিবন্ধন করতে হবে। এই প্রক্রিয়াটি WebAuthn রেজিস্ট্রেশন প্রক্রিয়ার অনুরূপ, একটি অর্থপ্রদানের এক্সটেনশন যোগ করে।

এই নিবন্ধে, ইস্যুকারী ব্যাঙ্কগুলি নির্ভরকারী পক্ষ (RPs) হিসাবে কাজ করছে তারা শিখতে পারে কিভাবে SPC নিবন্ধন বাস্তবায়ন করতে হয়। সিকিউর পেমেন্ট কনফার্মেশনের ওভারভিউতে ব্যবহারকারীর অভিজ্ঞতা আরও ব্যাখ্যা করা হয়েছে।

কিভাবে নিরাপদ পেমেন্ট নিশ্চিতকরণ নিবন্ধন কাজ করে?

SPC WebAuthn স্ট্যান্ডার্ডের এক্সটেনশন হিসাবে তৈরি করা হয়েছে।

এপ্রিল 2022 থেকে, SPC শুধুমাত্র ডেস্কটপে ব্যবহারকারী যাচাইকরণ প্ল্যাটফর্ম প্রমাণীকরণকারী (UVPA) সমর্থন করে। এর মানে হল গ্রাহককে একটি ডেস্কটপ বা ল্যাপটপে একটি এমবেডেড প্রমাণীকরণকারীর সাথে থাকতে হবে যেমন:

  • একটি macOS ডিভাইসে টাচ আইডি সহ আনলক বৈশিষ্ট্য
  • একটি উইন্ডোজ ডিভাইসে উইন্ডোজ হ্যালো

ডিভাইসটি নিবন্ধন করুন

নির্ভরশীল পক্ষের (RP-এর) একটি ডিভাইসের নিবন্ধন পর্যাপ্ত শক্তিশালী ব্যবহারকারী যাচাইকরণ প্রক্রিয়া অনুসরণ করা উচিত। আরপিকে অবশ্যই নিশ্চিত করতে হবে যে গ্রাহক শক্তিশালী প্রমাণীকরণ ব্যবহার করে ওয়েবসাইটে সাইন ইন করেছেন যাতে অ্যাকাউন্টটি সহজে হাইজ্যাক না হয়। সতর্কতা অবলম্বন করুন: এই প্রক্রিয়ায় নিরাপত্তার অভাব SPCকেও ঝুঁকির মধ্যে ফেলে।

একবার RP সফলভাবে গ্রাহককে প্রমাণীকরণ করলে, গ্রাহক এখন একটি ডিভাইস নিবন্ধন করতে পারবেন।

নির্ভরকারী পক্ষের ওয়েবসাইটে সাধারণ নিবন্ধন কার্যপ্রবাহ

বৈশিষ্ট্য সনাক্তকরণ

গ্রাহককে ডিভাইসটি নিবন্ধন করতে বলার আগে, RP কে অবশ্যই দেখতে হবে যে ব্রাউজারটি SPC সমর্থন করে।

const isSecurePaymentConfirmationSupported = async () => {
  if (!'PaymentRequest' in window) {
    return [false, 'Payment Request API is not supported'];
  }

  try {
    // The data below is the minimum required to create the request and
    // check if a payment can be made.
    const supportedInstruments = [
      {
        supportedMethods: "secure-payment-confirmation",
        data: {
          // RP's hostname as its ID
          rpId: 'rp.example',
          // A dummy credential ID
          credentialIds: [new Uint8Array(1)],
          // A dummy challenge
          challenge: new Uint8Array(1),
          instrument: {
            // Non-empty display name string
            displayName: ' ',
            // Transparent-black pixel.
            icon: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhAJ/wlseKgAAAABJRU5ErkJggg==',
          },
          // A dummy merchant origin
          payeeOrigin: 'https://non-existent.example',
        }
      }
    ];

    const details = {
      // Dummy shopping details
      total: {label: 'Total', amount: {currency: 'USD', value: '0'}},
    };

    const request = new PaymentRequest(supportedInstruments, details);
    const canMakePayment = await request.canMakePayment();
    return [canMakePayment, canMakePayment ? '' : 'SPC is not available'];
  } catch (error) {
    console.error(error);
    return [false, error.message];
  }
};

isSecurePaymentConfirmationSupported().then(result => {
  const [isSecurePaymentConfirmationSupported, reason] = result;
  if (isSecurePaymentConfirmationSupported) {
    // Display the payment button that invokes SPC.
  } else {
    // Fallback to the legacy authentication method.
  }
});

একটি প্রমাণীকরণকারী নিবন্ধন করুন

SPC-এর জন্য একটি ডিভাইস নিবন্ধন করতে, নিম্নলিখিত প্রয়োজনীয়তার সাথে WebAuthn নিবন্ধন প্রক্রিয়া অনুসরণ করুন:

  • প্ল্যাটফর্ম প্রমাণীকরণ প্রয়োজন: authenticatorSelection.authenticatorAttachment হল platform
  • ব্যবহারকারীর যাচাইকরণ প্রয়োজন: authenticatorSelection.userVerification required
  • আবিষ্কারযোগ্য শংসাপত্র (আবাসিক কী) প্রয়োজন: authenticatorSelection.residentKey required

উপরন্তু, isPayment: true । উপরোক্ত প্রয়োজনীয়তাগুলি পূরণ না করে এই এক্সটেনশনটি নির্দিষ্ট করা একটি ব্যতিক্রম হবে৷

কিছু অন্যান্য সতর্কতা:

  • rp.id : RP এর হোস্টনাম। ডোমেনের eTLD+1 অংশ অবশ্যই যেখানে নিবন্ধিত হচ্ছে তার সাথে মিলতে হবে। এটি eTLD+1 এর সাথে মেলে এমন ডোমেনে প্রমাণীকরণের জন্য ব্যবহার করা যেতে পারে।
  • user.id : ব্যবহারকারী শনাক্তকারীর একটি বাইনারি অভিব্যক্তি। সফল প্রমাণীকরণে একই শনাক্তকারী ফেরত দেওয়া হবে তাই RP-এর উচিত কার্ডধারীর একটি ধারাবাহিক ব্যবহারকারী শনাক্তকারী প্রদান করা।
  • excludeCredentials : শংসাপত্রের একটি অ্যারে যাতে RP একই প্রমাণীকরণকারীকে নিবন্ধন করা এড়াতে পারে।

WebAuthn নিবন্ধন প্রক্রিয়া সম্পর্কে আরও জানতে, webauthn.guide দেখুন।

উদাহরণ রেজিস্ট্রেশন কোড:

const options = {
  challenge: new Uint8Array([21...]),
  rp: {
    id: "rp.example",
    name: "Fancy Bank",
  },
  user: {
    id: new Uint8Array([21...]),
    name: "jane.doe@example.com",
    displayName: "Jane Doe",
  },
  excludeCredentials: [{
    id: new Uint8Array([21...]),
    type: 'public-key',
    transports: ['internal'],
  }, ...],
  pubKeyCredParams: [{
    type: "public-key",
    alg: -7 // "ES256"
  }, {
    type: "public-key",
    alg: -257 // "RS256"
  }],
  authenticatorSelection: {
    userVerification: "required",
    residentKey: "required",
    authenticatorAttachment: "platform",
  },
  timeout: 360000,  // 6 minutes

  // Indicate that this is an SPC credential. This is currently required to
  // allow credential creation in an iframe, and so that the browser knows this
  // credential relates to SPC.
  extensions: {
    "payment": {
      isPayment: true,
    }
  }
};

try {
  const credential = await navigator.credentials.create({ publicKey: options });
  // Send new credential info to server for verification and registration.
} catch (e) {
  // No acceptable authenticator or user refused consent. Handle appropriately.
}

একটি সফল রেজিস্ট্রেশনের পর, RP যাচাইয়ের জন্য সার্ভারে পাঠানোর জন্য একটি শংসাপত্র পায়।

নিবন্ধন যাচাই করুন

সার্ভারে, RP-কে অবশ্যই শংসাপত্র যাচাই করতে হবে এবং পরবর্তী ব্যবহারের জন্য সর্বজনীন কী রাখতে হবে। সার্ভার-সাইড রেজিস্ট্রেশন প্রক্রিয়া একটি সাধারণ WebAuthn রেজিস্ট্রেশনের মতোই। SPC মেনে চলার জন্য অতিরিক্ত কিছুর প্রয়োজন নেই।

একটি iframe মধ্যে থেকে নিবন্ধন

যদি অর্থপ্রদানকারী তাদের ডিভাইসটি RP (পেমেন্ট ইস্যুকারী) এর সাথে নিবন্ধিত না করে থাকেন, তাহলে অর্থদাতা ব্যবসায়ীর ওয়েবসাইটে নিবন্ধন করতে পারেন। একটি ক্রয়ের সময় একটি সফল প্রমাণীকরণের পরে, RP প্রদানকারীকে একটি আইফ্রেমের মধ্যে থেকে পরোক্ষভাবে তাদের ডিভাইস নিবন্ধন করার জন্য অনুরোধ করতে পারে।

অর্থপ্রদানের সময় একটি বণিক ওয়েবসাইটে নিবন্ধনের কার্যপ্রবাহ।

এটি করার জন্য, বণিক বা অভিভাবককে অবশ্যই অনুমতি নীতি ব্যবহার করে একটি আইফ্রেমের মধ্যে এই ক্রিয়াটি স্পষ্টভাবে অনুমতি দিতে হবে৷ ইস্যুকারী একটি আইফ্রেমের মধ্যে একটি প্রমাণীকরণকারী নিবন্ধন করতে একই পদক্ষেপগুলি অনুসরণ করে৷

রেজিস্ট্রেশনের অনুমতি দেওয়ার জন্য বণিকের জন্য দুটি পন্থা রয়েছে:

  1. মার্চেন্ট ডোমেন থেকে পরিবেশিত HTML-এ iframe ট্যাগ একটি allow বৈশিষ্ট্য যোগ করে:

    <iframe name="iframe" allow="payment https://spc-rp.glitch.me"></iframe>
    

    নিশ্চিত করুন যে allow অ্যাট্রিবিউটে payment এবং RP উত্স রয়েছে যা WebAuthn রেজিস্ট্রেশনকে আহ্বান করে।

  2. প্যারেন্ট ফ্রেম ডকুমেন্ট (বণিক ডোমেন থেকে পরিবেশিত) একটি Permissions-Policy HTTP হেডার সহ পাঠানো হয়:

    Permissions-Policy: payment=(self "https://spc-rp.glitch.me")
    

পরবর্তী পদক্ষেপ

একবার একটি ডিভাইস নির্ভরকারী পক্ষের কাছে নিবন্ধিত হয়ে গেলে, গ্রাহক নিরাপদ অর্থপ্রদান নিশ্চিতকরণ ব্যবহার করে বণিকের ওয়েবসাইটে অর্থপ্রদান নিশ্চিত করতে পারেন।