किसी लेन-देन में सुरक्षित पेमेंट की पुष्टि (एसपीसी) का इस्तेमाल करने के लिए, ग्राहक को पहले पुष्टि करने वाला टूल रजिस्टर करना होगा. यह प्रोसेस, WebAuthn के रजिस्टर करने की प्रोसेस से काफ़ी मिलती-जुलती है. हालांकि, इसमें पेमेंट एक्सटेंशन भी जोड़ा गया है.
इस लेख में, रिलीज़ करने वाले बैंकों को एसपीसी रजिस्ट्रेशन को लागू करने का तरीका बताया गया है. ये बैंक, भरोसेमंद पक्ष (आरपी) के तौर पर काम करते हैं. उपयोगकर्ता अनुभव के बारे में ज़्यादा जानने के लिए, सुरक्षित पेमेंट की पुष्टि की खास जानकारी देखें.
सुरक्षित पेमेंट की पुष्टि करने की सुविधा के लिए रजिस्ट्रेशन कैसे काम करता है?
एसपीसी, WebAuthn स्टैंडर्ड के एक्सटेंशन के तौर पर बनाया गया है.
अप्रैल 2022 तक, SPC सिर्फ़ डेस्कटॉप पर, उपयोगकर्ता की पुष्टि करने वाले प्लैटफ़ॉर्म के पुष्टि करने वाले एजेंट (यूवीपीए) के साथ काम करता है. इसका मतलब है कि खरीदार के पास डेस्कटॉप या लैपटॉप होना चाहिए, जिसमें एम्बेड किया गया पुष्टि करने वाला टूल हो. जैसे:
- macOS डिवाइस पर, Touch ID की मदद से अनलॉक करने की सुविधा
- Windows डिवाइस पर Windows Hello
डिवाइस रजिस्टर करना
डिवाइस के लिए, भरोसेमंद पक्ष (आरपी) को उपयोगकर्ता की पुष्टि करने के लिए, ज़रूरत के मुताबिक सुरक्षित तरीका अपनाना चाहिए. आरपी को यह पक्का करना होगा कि खरीदार ने वेबसाइट पर साइन इन करने के लिए, पुष्टि करने के बेहतर तरीके का इस्तेमाल किया हो, ताकि खाते को आसानी से हाइजैक न किया जा सके. सावधान रहें: इस प्रोसेस में सुरक्षा की कमी होने पर, एसपीसी को भी खतरा हो सकता है.
आरपी के ग्राहक की पुष्टि करने के बाद, ग्राहक अब डिवाइस रजिस्टर कर सकता है.
फ़ीचर का पता लगाना
ग्राहक से डिवाइस रजिस्टर करने के लिए कहने से पहले, आरपी को यह देखना होगा कि ब्राउज़र में 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.
}
});
पुष्टि करने वाला ऐप्लिकेशन रजिस्टर करना
किसी डिवाइस को एसपीसी के लिए रजिस्टर करने के लिए, WebAuthn रजिस्ट्रेशन प्रोसेस को इन ज़रूरी शर्तों के साथ पूरा करें:
- प्लैटफ़ॉर्म की पुष्टि करने वाला एट्रिब्यूट ज़रूरी है:
authenticatorSelection.authenticatorAttachment
platform
है. - उपयोगकर्ता की पुष्टि करना ज़रूरी है:
authenticatorSelection.userVerification
required
है. - डिस्कवर किए जा सकने वाले क्रेडेंशियल (रेज़िडेंट कुंजियां) ज़रूरी हैं:
authenticatorSelection.residentKey
required
है.
इसके अलावा, isPayment: true
के साथ "पेमेंट" एक्सटेंशन भी डालें. ऊपर दी गई ज़रूरी शर्तों को पूरा किए बिना, इस एक्सटेंशन की जानकारी देने पर, अपवाद दिखेगा
कुछ और बातें:
rp.id
: आरपी का होस्टनेम. डोमेन के eTLD+1 हिस्से का नाम, उस देश से मेल खाना चाहिए जहां डोमेन रजिस्टर किया जा रहा है. इसका इस्तेमाल, eTLD+1 से मैच करने वाले डोमेन की पुष्टि करने के लिए किया जा सकता है.user.id
: उपयोगकर्ता आइडेंटिफ़ायर का बाइनरी एक्सप्रेशन. पुष्टि होने पर, वही आइडेंटिफ़ायर दिखाया जाएगा. इसलिए, आरपी को कार्ड के मालिक का एक ही यूज़र आइडेंटिफ़ायर देना चाहिए.excludeCredentials
: क्रेडेंशियल का कलेक्शन, ताकि आरपी एक ही पुष्टि करने वाले टूल को रजिस्टर करने से बच सके.
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.
}
रजिस्ट्रेशन पूरा होने के बाद, आरपी को एक क्रेडेंशियल मिलता है. इसे पुष्टि के लिए सर्वर पर भेजा जाता है.
रजिस्ट्रेशन की पुष्टि करना
सर्वर पर, आरपी को क्रेडेंशियल की पुष्टि करनी होगी और बाद में इस्तेमाल करने के लिए सार्वजनिक कुंजी को सेव करना होगा. सर्वर साइड रजिस्ट्रेशन की प्रोसेस, सामान्य WebAuthn रजिस्ट्रेशन जैसी ही है. एसपीसी का पालन करने के लिए, कुछ और करने की ज़रूरत नहीं है.
iframe में जाकर रजिस्टर करना
अगर पेमेंट करने वाले व्यक्ति ने अपने डिवाइस को आरपी (पेमेंट जारी करने वाली कंपनी) के साथ रजिस्टर नहीं किया है, तो वह व्यापारी/कंपनी की वेबसाइट पर जाकर रजिस्टर कर सकता है. खरीदारी के दौरान पुष्टि होने के बाद, आरपी, पेमेंट करने वाले व्यक्ति से अनुरोध कर सकता है कि वह अपने डिवाइस को किसी iframe में जाकर, अप्रत्यक्ष तरीके से रजिस्टर करे.
इसके लिए, व्यापारी/कंपनी या माता-पिता को अनुमतियों की नीति का इस्तेमाल करके, iframe में इस कार्रवाई की साफ़ तौर पर अनुमति देनी होगी. जारीकर्ता, iframe में पुष्टि करने वाले ऐप्लिकेशन को रजिस्टर करने के लिए, वही तरीका अपनाता है.
व्यापारी/कंपनी/कारोबारी, इन दो तरीकों से लोगों को रजिस्टर करने की अनुमति दे सकते हैं:
व्यापारी/कंपनी/कारोबारी के डोमेन से दिखाए गए एचटीएमएल में मौजूद iframe टैग,
allow
एट्रिब्यूट जोड़ता है:<iframe name="iframe" allow="payment https://spc-rp.glitch.me"></iframe>
पक्का करें कि
allow
एट्रिब्यूट मेंpayment
और आरपी ऑरिजिन शामिल हो, जो WebAuthn रजिस्ट्रेशन को ट्रिगर करता हो.पैरंट फ़्रेम दस्तावेज़ (व्यापारी/कंपनी/कारोबारी के डोमेन से दिखाया जाता है) को
Permissions-Policy
एचटीटीपी हेडर के साथ भेजा जाता है:Permissions-Policy: payment=(self "https://spc-rp.glitch.me")
अगले चरण
किसी डिवाइस को भरोसेमंद पार्टी के साथ रजिस्टर करने के बाद, ग्राहक सुरक्षित पेमेंट की पुष्टि करने की सुविधा का इस्तेमाल करके, कारोबारी या कंपनी की वेबसाइट पर पेमेंट की पुष्टि कर सकता है.
- सुरक्षित पेमेंट की पुष्टि करने की सुविधा की मदद से पुष्टि करने का तरीका जानें
- पेमेंट की सुरक्षित पुष्टि के बारे में खास जानकारी पढ़ें