WebAuthn এবং passkeys-এ, নির্ভরশীল পক্ষের আইডি (RP ID) ডোমেন নামের মাধ্যমে একটি শংসাপত্রের সুযোগ নির্দিষ্ট করে। যখন আপনি একটি পাসকি তৈরি করেন, তখন ব্রাউজার এটিকে একটি নির্দিষ্ট RP ID-এর সাথে সংযুক্ত করে। এরপর ব্রাউজারটি এমন একটি ডোমেনে সেই পাসকি ব্যবহার করা থেকে বিরত রাখে যা সেই আইডির সাথে মেলে না বা এর সুযোগের মধ্যে পড়ে না। আপনার RP ID সঠিকভাবে সংজ্ঞায়িত করলে সাবডোমেন, ক্রস-সাইট অরিজিন এবং প্রথম-পক্ষের মোবাইল অ্যাপগুলিতে একটি নির্বিঘ্ন পাসকি অভিজ্ঞতা নিশ্চিত হয়।
আরপি আইডির মূল বিষয়গুলি
রিলাইং পার্টি আইডি (RP ID) হল একটি অনন্য স্ট্রিং যা আপনার পরিষেবা বা ওয়েবসাইটকে শনাক্ত করে। একটি RP ID অবশ্যই একটি ডোমেন স্ট্রিং হতে হবে। এটি সঠিক বর্তমান হোস্টনেম অথবা একটি বৃহত্তর প্যারেন্ট ডোমেন হতে পারে, যদি এটি একটি eTLD+1 বা উচ্চতর হয়। আপনি RP ID হিসেবে IP ঠিকানা এবং পাবলিক সাফিক্স (eTLD) ব্যবহার করতে পারবেন না।
উদাহরণস্বরূপ, যদি আপনি https://www.example.com এ আপনার সার্ভার হোস্ট করেন, তাহলে নির্দিষ্ট চাহিদার উপর নির্ভর করে আপনি example.com বা www.example.com কে RP ID হিসেবে ব্যবহার করতে পারেন। নিম্নলিখিত টেবিলে আপনার মূল হোস্টের উপর নির্ভর করে অনুমোদিত RP ID গুলির উদাহরণ দেখানো হয়েছে:
| মূল হোস্ট | অনুমোদিত RP আইডি (eTLD+1) |
|---|---|
https://login.example.com | example.com অথবা login.example.com |
https://example.com:8080 | example.com (পোর্ট নম্বর বাদ দেওয়া হয়েছে) |
https://mobile.example.co.jp | example.co.jp অথবা mobile.example.co.jp |
https://sub.project.org.uk | project.org.uk অথবা sub.project.org.uk |
https://user.github.io | user.github.io ( github.io একটি eTLD) |
https://myapp.pages.dev | myapp.pages.dev ( pages.dev একটি eTLD) |
http://localhost | localhost (HTTPS প্রয়োজনীয়তার ব্যতিক্রম) |
যখন আপনি RP ID তৈরি করেন, তখন ব্রাউজার ক্রিপ্টোগ্রাফিকভাবে পাসকিগুলিকে RP ID-এর সাথে সংযুক্ত করে। একটি শংসাপত্র ব্যবহার করতে, প্রমাণীকরণ অনুরোধের উৎস অবশ্যই সেই RP ID-এর সাথে মিলতে হবে।
যখন আপনি RP ID হিসেবে eTLD+1 ব্যবহার করেন, তখন পাসকিটি সংশ্লিষ্ট সাবডোমেন জুড়ে কাজ করে। উদাহরণস্বরূপ, example.com এর একটি RP ID https://login.example.com এবং https://shop.example.com এর জন্য কাজ করে। login.example.com এর মতো আরও নির্দিষ্ট RP ID তার সঠিক উৎসে কাজ করে কিন্তু https://shop.example.com এ নয়।
ক্রস-সাইট প্রসঙ্গে RP আইডি
যদি আপনার পরিষেবা একাধিক eTLD+1s (যেমন, example.com এবং example.co.jp ) জুড়ে বিস্তৃত হয়, তাহলে এটি একটি ক্রস-সাইট কনফিগারেশন। স্ট্যান্ডার্ড RP আইডি ক্রস-সাইট সেটআপ সমর্থন করে না।
বিভিন্ন সাইটের মধ্যে পাসকি শেয়ার করতে, রিলেটেড অরিজিন রিকোয়েস্ট (ROR) ব্যবহার করুন। ROR আপনাকে বিভিন্ন সাইটের মধ্যে পাসকি শেয়ার করতে দেয় কারণ ক্লায়েন্ট (ব্রাউজার) একই লজিক্যাল পরিষেবার অংশ হিসাবে বিভিন্ন অরিজিনকে স্বীকৃতি দেয়।
ROR এর জন্য প্রয়োজনীয়তা:
- একটি RP আইডি বেছে নিন: আপনাকে অবশ্যই একটি RP আইডি বেছে নিতে হবে এবং এটি সমস্ত সাইটে ব্যবহার করতে হবে।
- একটি কনফিগারেশন ফাইল হোস্ট করুন: প্রাথমিক RP আইডি ডোমেনকে
/.well-known/webauthnএ একটি কনফিগারেশন ফাইল হোস্ট করতে হবে যা অনুমোদিত উৎস তালিকাভুক্ত করে। - ধারাবাহিকতা বজায় রাখুন: ব্যবহারকারী
https://www.example.co.jpএ থাকলেও, WebAuthn কলেrpIdঅবশ্যই সৃষ্টি এবং প্রমাণীকরণ উভয় ক্ষেত্রেই প্রাথমিক (উদাহরণস্বরূপ,example.com) হতে হবে।
RP ID example.com এর জন্য ROR এর উদাহরণ: https://example.com/.well-known/webauthn
{
"origins": [
"https://www.example.co.jp",
"https://shop.example"
]
}
সম্পর্কিত অরিজিন অনুরোধ বাস্তবায়নের বিশদ সম্পর্কে আরও তথ্যের জন্য, সম্পর্কিত অরিজিন অনুরোধ সহ আপনার সাইটগুলিতে পাসকি পুনঃব্যবহারের অনুমতি দিন দেখুন
মোবাইল অ্যাপে RP আইডি
মোবাইল অ্যাপ্লিকেশনগুলি একটি ওয়েব ডোমেনের সাথে সংযুক্ত হয়ে পাসকি ব্যবহার করতে পারে। এই সম্পর্ক স্থাপনের জন্য আপনাকে অবশ্যই আপনার সার্ভারে একটি যাচাইকরণ ফাইল হোস্ট করতে হবে।
অ্যান্ড্রয়েড: ডিজিটাল সম্পদের লিঙ্ক
অ্যান্ড্রয়েড ক্রেডেনশিয়াল ম্যানেজারের অ্যাপের সাথে সংযুক্ত হওয়ার জন্য RP আইডি ডোমেনে একটি ডিজিটাল অ্যাসেট লিঙ্ক (DAL) ফাইল প্রয়োজন।
- হোস্টিং:
https://<RP ID>/.well-known/assetlinks.jsonএ ফাইলটি হোস্ট করুন। - যাচাইকরণ:
clientDataJSONএoriginযাচাই করুন। অ্যান্ড্রয়েডের জন্য, এটি একটি স্ট্রিং যেমনandroid:apk-key-hash:<hash>।
RP ID example.com এর জন্য DAL-এর উদাহরণ ( https://example.com/.well-known/assetlinks.json এ হোস্ট করা হয়েছে)
[
{
"relation": [
"delegate_permission/common.handle_all_urls",
"delegate_permission/common.get_login_creds"
],
"target": {
"namespace": "android_app",
"package_name": "com.google.credentialmanager.sample",
"sha256_cert_fingerprints": [
"4F:20:47:1F:D9:9A:BA:96:47:8D:59:27:C2:C8:A6:EA:8E:D2:8D:14:C0:B6:A2:39:99:9F:A3:4D:47:3D:FA:11"
]
}
}
]
আরও তথ্যের জন্য, আপনার অ্যাপ এবং ওয়েবসাইটের মধ্যে ডিজিটাল সম্পদ লিঙ্ক কনফিগার করুন দেখুন
iOS: সংশ্লিষ্ট ডোমেইন
অ্যাপল প্ল্যাটফর্মগুলির অ্যাপের সাথে সংযুক্ত হওয়ার জন্য RP আইডি ডোমেনে একটি apple-app-site-association (AASA) ফাইল প্রয়োজন।
- AASA ফাইল: হোস্ট
https://<RP_ID>/.well-known/apple-app-site-association। - এনটাইটেলমেন্ট: অ্যাপ এনটাইটেলমেন্টে
webcredentials:<app info>যোগ করুন।
RP ID এর জন্য AASA উদাহরণ example.com : https://example.com/.well-known/apple-app-site-association :
{
"webcredentials":
{
"apps": ["EXAMPLE123.com.example.passkey"]
}
}
আরও তথ্যের জন্য, অ্যাপল ডেভেলপার ডকুমেন্টেশনে পাসকি ব্যবহার করে কোনও পরিষেবার সাথে সংযোগ স্থাপন দেখুন।
সারাংশ
RP ID নির্ধারণ করে যে আপনার ব্যবহারকারীরা তাদের পাসকিগুলি কোথায় অ্যাক্সেস করবেন। বাস্তবায়নের সময় এই বিষয়গুলি মনে রাখবেন:
- হায়ারার্কি এবং সাবডোমেন : RP আইডি অবশ্যই একটি ডোমেন স্ট্রিং (eTLD+1 বা তার বেশি) হতে হবে।
example.comএর মতো একটি বৃহত্তর ডোমেন ব্যবহার করলে পাসকিগুলি সমস্ত সাবডোমেন জুড়ে কাজ করতে পারে (উদাহরণস্বরূপ,login.example.comএবংshop.example.com)। - ক্রস-সাইট সমাধান : একাধিক eTLD+1 বিস্তৃত পরিষেবার জন্য সম্পর্কিত অরিজিন রিকোয়েস্ট (ROR) ব্যবহার করুন। এর জন্য একটি RP ID এবং
/.well-known/webauthnএ একটি কনফিগারেশন ফাইল প্রয়োজন। - মোবাইল ইন্টিগ্রেশন : অ্যান্ড্রয়েডের জন্য
/.well-known/assetlinks.jsonওয়েবসাইটে একটি ডিজিটাল অ্যাসেট লিংক (DAL) ফাইল এবং iOS এর জন্য/.well-known/apple-app-site-associationওয়েবসাইটে একটি apple-app-site-association (AASA) ফাইল ব্যবহার করে আপনার ওয়েবসাইট এবং মোবাইল অ্যাপের মধ্যে একটি যাচাইকৃত সম্পর্ক স্থাপন করুন।