১. সংক্ষিপ্ত বিবরণ
আপনার ব্যবহারকারীরা কি ওয়েবসাইট এবং অ্যান্ড্রয়েড অ্যাপ উভয় মাধ্যমেই আপনার পরিষেবা ব্যবহার করেন? প্রতিটি প্ল্যাটফর্মে তাদের আলাদাভাবে সাইন ইন করতে বাধ্য করা হলে তা অপ্রয়োজনীয় জটিলতা তৈরি করে এবং এর ফলে ব্যবহারকারীরা পরিষেবা ব্যবহার করা বন্ধ করে দিতে পারেন।
ডিজিটাল অ্যাসেট লিঙ্কস (DAL) আপনার ওয়েবসাইট এবং অ্যাপগুলোর মধ্যে সংযোগ স্থাপন করার সুযোগ দিয়ে এই সমস্যার সমাধান করে। এর ফলে গুগল পাসওয়ার্ড ম্যানেজারের মতো পাসওয়ার্ড ম্যানেজারগুলো তাদের মধ্যে সংরক্ষিত পাসওয়ার্ড এবং পাসকি শেয়ার করতে পারে।
বিশেষত, আপনি কী শেয়ার করতে চান তার উপর নির্ভর করে আপনার ডিজিটাল অ্যাসেট লিঙ্কস ফাইলটি কনফিগার করার জন্য বিভিন্ন ধরনের সম্পর্কের প্রয়োজন হয়:
- পাসওয়ার্ডের ক্ষেত্রে:
delegate_permission/common.get_login_credsঅন্তর্ভুক্ত করলে পাসওয়ার্ড ম্যানেজাররা আপনার ওয়েবসাইট এবং অ্যাপের মধ্যে সংরক্ষিত পাসওয়ার্ড শেয়ার করতে পারে। - পাসকির জন্য: যেহেতু পাসকিগুলো একটি নির্দিষ্ট ওয়েব ডোমেইনের সাথে কঠোরভাবে আবদ্ধ থাকে, তাই অ্যান্ড্রয়েডের ডোমেইন মালিকানার প্রমাণ প্রয়োজন হয়। এজন্য, আপনাকে অবশ্যই
delegate_permission/common.handle_all_urlsঅন্তর্ভুক্ত করতে হবে। যদিও আপনি এটিকে অ্যান্ড্রয়েড অ্যাপ লিঙ্ক (ডিপ লিঙ্কিং)-এর জন্য ব্যবহৃত পারমিশন হিসেবে চিনতে পারেন, তবে একটি প্ল্যাটফর্মে তৈরি পাসকি অন্য প্ল্যাটফর্মে ব্যবহারের অনুমতি দেওয়ার জন্যও এটি একটি কঠোর আবশ্যকতা।
এর ফল কী? ব্যবহারকারীরা আপনার অধিভুক্ত প্ল্যাটফর্মগুলোর মধ্যে মাত্র একটির জন্য সংরক্ষিত পাসওয়ার্ড বা পাসকি ব্যবহার করে নির্বিঘ্নে সবগুলোতে সাইন ইন করতে পারবেন।

নির্বিঘ্ন ক্রেডেনশিয়াল শেয়ারিং বাস্তবায়ন করলে ব্যবহারকারীর অভিজ্ঞতা উল্লেখযোগ্যভাবে উন্নত হতে পারে। উদাহরণস্বরূপ, ক্রেডেনশিয়াল শেয়ারিংয়ের জন্য ডিএএল (DAL) বাস্তবায়নের পর ইবে (eBay)-তে সাইন-ইন সফলতার হার ১০% বৃদ্ধি পেয়েছে ।
এই কোডল্যাবে আপনি শিখবেন, কীভাবে ডিজিটাল অ্যাসেট লিঙ্ক ব্যবহার করে আপনার ওয়েবসাইট এবং অ্যান্ড্রয়েড অ্যাপের মধ্যে ক্রেডেনশিয়াল শেয়ারিং সক্ষম করা যায়।
পূর্বশর্ত
- JSON এবং অ্যান্ড্রয়েড ডেভেলপমেন্ট সম্পর্কে প্রাথমিক জ্ঞান।
- অ্যান্ড্রয়েড ক্রেডেনশিয়াল ম্যানেজারের পূর্বশর্তগুলো সম্পর্কে পরিচিতি।
আপনি যা শিখবেন
- গুগল প্লে কনসোল ব্যবহার করে ক্রেডেনশিয়াল শেয়ারিং কীভাবে সেট আপ করবেন (প্রস্তাবিত)।
- ম্যানুয়ালি কীভাবে একটি
assetlinks.jsonফাইল তৈরি করবেন। - ম্যানুয়াল অ্যাসোসিয়েশনের জন্য একটি অ্যান্ড্রয়েড অ্যাপ কীভাবে কনফিগার করবেন।
- একটি ওয়েবসাইট ডোমেইনের সাথে যুক্ত করে অ্যান্ড্রয়েড অ্যাপে কীভাবে পাসকি সক্রিয় করবেন
- আপনার সেটআপ তৈরি ও যাচাই করতে টুলগুলো কীভাবে ব্যবহার করবেন।
আপনার যা যা লাগবে
- একটি ওয়েবসাইট :
https://{your-domain}/.well-known/assetlinks.jsonঠিকানায় একটি JSON ফাইল হোস্ট করার ক্ষমতা। - একটি অ্যান্ড্রয়েড অ্যাপ :
- প্লে কনসোল পদ্ধতির জন্য: গুগল প্লে-তে প্রকাশিত একটি অ্যাপ।
- ম্যানুয়াল পদ্ধতির জন্য: একটি অ্যান্ড্রয়েড প্রজেক্ট যা আপনি পরিবর্তন ও বিল্ড করতে পারবেন। মনে রাখবেন, গুগল পাসওয়ার্ড ম্যানেজারের সাথে ক্রেডেনশিয়াল শেয়ারিং কাজ করার জন্য অ্যাপটি অবশ্যই গুগল প্লে-তে প্রকাশিত হতে হবে।
এটি কীভাবে কাজ করে
ক্রেডেনশিয়াল শেয়ারিং কার্যকর করতে, আপনাকে একটি দ্বিমুখী বিশ্বাস স্থাপন করতে হবে:
- ওয়েব -> অ্যাপ : আপনার ওয়েবসাইটে অবশ্যই একটি
assetlinks.jsonফাইল থাকতে হবে, যা ঘোষণা করবে যে এটি আপনার অ্যান্ড্রয়েড অ্যাপকে বিশ্বাস করে। - অ্যাপ -> ওয়েব : আপনার অ্যান্ড্রয়েড অ্যাপটিকে অবশ্যই আপনার ওয়েবসাইটকে বিশ্বাস করার জন্য কনফিগার করতে হবে।
এটি করার দুটি উপায় আমরা আলোচনা করব: গুগল প্লে কনসোল ব্যবহার করে স্বয়ংক্রিয় পদ্ধতি (যা সুপারিশ করা হয়), এবং সরাসরি ডিজিটাল অ্যাসেট লিঙ্ক ব্যবহার করে ম্যানুয়াল পদ্ধতি ।
২. গুগল প্লে কনসোল ব্যবহার করে সেট আপ করুন (প্রস্তাবিত)
আপনার ওয়েবসাইট এবং অ্যান্ড্রয়েড অ্যাপের মধ্যে ক্রেডেনশিয়াল শেয়ারিং চালু করার সবচেয়ে সহজ উপায় হলো গুগল প্লে কনসোল ব্যবহার করা। এই পদ্ধতির মাধ্যমে আপনি আপনার অ্যাপের ম্যানিফেস্ট পরিবর্তন না করে বা অ্যাপের নতুন সংস্করণ প্রকাশ না করেই সেটিকে আপনার ওয়েবসাইটের সাথে যুক্ত করতে পারবেন। গুগল প্লে আপনার হয়ে অ্যাপ-সাইডের এই সংযোগটি পরিচালনা করে।
পূর্বশর্ত
- ডিপ লিঙ্কস পেজ অ্যাক্সেস করার জন্য প্লে কনসোলের অনুমতি।
- আপনার ডোমেইনে একটি
/.well-known/assetlinks.jsonফাইল প্রকাশ করার ক্ষমতা।
ডিপ লিঙ্ক সম্পর্কে আরও তথ্যের জন্য, অ্যান্ড্রয়েড অ্যাপ লিঙ্কস দেখুন।
পদক্ষেপ
- প্লে কনসোলে , Grow > Deep links- এ যান।
- আপনার ডোমেইনটি তালিকাভুক্ত না থাকলে, অ্যাপ কনফিগারেশন-এর অধীনে 'ডোমেইন যোগ করুন'- এ ক্লিক করুন।
- আপনার ডোমেইনটি খুঁজুন এবং ক্রেডেনশিয়াল শেয়ারিং কলামটি সনাক্ত করুন। টার্ন অন-এ ক্লিক করুন (অথবা নতুন ডোমেইনের জন্য এনাবল ক্রেডেনশিয়াল শেয়ারিং টগলটি অন করা আছে কিনা তা নিশ্চিত করুন)।
- প্লে কনসোল দ্বারা তৈরি JSON স্নিপেটটি কপি করুন।
- এই JSON কন্টেন্টটি
https://{your-domain}/.well-known/assetlinks.json-এ প্রকাশ করুন। (যদি আপনার কাছে এই ফাইলটি আগে থেকেই থাকে, তবে নতুন স্টেটমেন্টটি এর সাথে যুক্ত করুন)। - প্লে কনসোলে ফিরে এসে, 'Create website association' অথবা 'Turn on credential sharing'-এ ক্লিক করুন।
প্লে কনসোল এখন আপনার হোস্টিং সেটআপ যাচাই করবে।

ক্রেডেনশিয়াল শেয়ারিং কার্যকর হওয়ার জন্য, আপনার ওয়েবসাইট হোস্টকে নিম্নলিখিত শর্তগুলো পূরণ করতে হবে:
- ইউআরএলটি HTTPS এর মাধ্যমে অ্যাক্সেসযোগ্য।
- সার্ভার
Content-Type: application/jsonদিয়ে সাড়া দেয়। - ইউআরএলটি রিডাইরেক্ট ছাড়াই অ্যাক্সেসযোগ্য।
একবার যাচাই হয়ে গেলে, ক্রেডেনশিয়াল শেয়ারিং সক্রিয় হয়ে যাবে! কনফিগারেশনের পরিবর্তনগুলো কার্যকর হতে ১-২ সপ্তাহ সময় লাগতে পারে।
৩. ডিজিটাল অ্যাসেট লিঙ্ক ব্যবহার করে ম্যানুয়ালি সেট আপ করুন
আরও বেশি নিয়ন্ত্রণ চান? অথবা প্লে কনসোলে আপনার অ্যাক্সেস নেই? আপনি আপনার ওয়েবসাইট এবং অ্যান্ড্রয়েড অ্যাপের মধ্যে ক্রেডেনশিয়াল শেয়ারিং ম্যানুয়ালি কনফিগার করতে পারেন। এর জন্য দুটি প্রধান কাজ করতে হয়: আপনার সাইটে JSON ফাইলটি হোস্ট করা এবং আপনার অ্যান্ড্রয়েড অ্যাপের ম্যানিফেস্ট আপডেট করা।
১. আপনার অ্যাপের ডিজিটাল ফিঙ্গারপ্রিন্ট নিন।
নির্বিঘ্ন ক্রেডেনশিয়াল শেয়ারিং সেট আপ করার আগে, প্রতিটি প্ল্যাটফর্মের জন্য আপনার কাছে নিম্নলিখিত জিনিসগুলি আছে কিনা তা নিশ্চিত করুন:
প্রতিটি অ্যান্ড্রয়েড অ্যাপের জন্য:
- অ্যাপটির
build.gradleফাইলে ঘোষিত অ্যান্ড্রয়েড অ্যাপ্লিকেশন আইডি । - স্বাক্ষরকারী সার্টিফিকেটের SHA256 ফিঙ্গারপ্রিন্ট ।
- (সুপারিশকৃত) ক্রেডেনশিয়াল ম্যানেজার এপিআই (Credential Manager API) ব্যবহার করে ব্যবহারকারীর সাইন-ইন বাস্তবায়ন করা হয়েছে।
২. অ্যাসোসিয়েশন ফাইলটি তৈরি করুন
আপনাকে একটি assetlinks.json ফাইল তৈরি করতে হবে, যা আপনার ওয়েবসাইট এবং অ্যাপের মধ্যে সম্পর্ক ঘোষণা করবে। পাসওয়ার্ড শেয়ার করার অনুমতি দেওয়ার জন্য delegate_permission/common.get_login_creds ব্যবহার করুন, এবং ডিপ লিঙ্কিং সক্ষম করতে ও পাসকি শেয়ার করার জন্য delegate_permission/common.handle_all_urls ব্যবহার করুন।
নিম্নলিখিত বিষয়বস্তু সহ assetlinks.json নামে একটি ফাইল তৈরি করুন। উদাহরণস্বরূপ দেওয়া মানগুলি আপনার নিজের সাইটের URL, প্যাকেজ নাম এবং ফিঙ্গারপ্রিন্ট দিয়ে প্রতিস্থাপন করুন :
[{
"relation": [
"delegate_permission/common.handle_all_urls",
"delegate_permission/common.get_login_creds"
],
"target": {
"namespace": "android_app",
"package_name": "com.example.app",
"sha256_cert_fingerprints":
["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
}
}]
৩. ফাইলটি হোস্ট করুন
আপনার assetlinks.json ফাইলটি আপনার ডোমেইনের রুটে থাকা .well-known ডিরেক্টরিতে আপলোড করুন।
অবস্থান: https://{your-domain}/.well-known/assetlinks.json
ক্রেডেনশিয়াল শেয়ারিং কার্যকর হওয়ার জন্য, আপনার ওয়েবসাইট হোস্টকে নিম্নলিখিত শর্তগুলো পূরণ করতে হবে:
- ইউআরএলটি HTTPS এর মাধ্যমে অ্যাক্সেসযোগ্য।
- সার্ভার
Content-Type: application/jsonদিয়ে সাড়া দেয়। - ইউআরএলটি রিডাইরেক্ট ছাড়াই অ্যাক্সেসযোগ্য।

৪. আপনার অ্যান্ড্রয়েড অ্যাপ কনফিগার করুন
এখন, আপনার অ্যান্ড্রয়েড অ্যাপকে ওয়েবসাইটটিকে বিশ্বাস করতে বলুন। আপনি ম্যানিফেস্টে একটি রেফারেন্স যোগ করবেন যা আপনার assetlinks.json URL ধারণকারী একটি রিসোর্স ফাইলকে নির্দেশ করবে।
১. একটি স্ট্রিং রিসোর্স যোগ করুন
res/values/strings.xml ফাইলে asset_statements নামে একটি নতুন স্ট্রিং যোগ করুন। এস্কেপড কোটেশন চিহ্নগুলো লক্ষ্য করুন!
<resources>
<string name="asset_statements" translatable="false">
[{
\"include\": \"https://www.example.com/.well-known/assetlinks.json\"
}]
</string>
</resources>
২. ম্যানিফেস্টে মেটাডেটা যোগ করুন
AndroidManifest.xml ফাইলের <application> এলিমেন্টের মধ্যে একটি <meta-data> ট্যাগ যোগ করুন যা এই স্ট্রিং রিসোর্সটিকে রেফারেন্স করে:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.app">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<meta-data
android:name="asset_statements"
android:resource="@string/asset_statements" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
এই ধাপগুলো সম্পন্ন করার পর এবং আপনার অ্যান্ড্রয়েড অ্যাপের একটি নতুন সংস্করণ প্রকাশ করার পরে, যে পাসওয়ার্ড ম্যানেজারগুলো ডিজিটাল অ্যাসেট লিঙ্ক সমর্থন করে (যেমন গুগল পাসওয়ার্ড ম্যানেজার), সেগুলো ব্যবহারকারী যখন com.example.app এ সাইন ইন করার চেষ্টা করবে তখন www.example.com এর জন্য সংরক্ষিত ক্রেডেনশিয়াল সাজেস্ট করতে পারবে এবং এর বিপরীতটিও ঘটবে।
৪. আপনার সেটআপ যাচাই করুন।
শিপ করার আগে, আপনার ডিজিটাল অ্যাসেট লিঙ্ক কনফিগারেশন যাচাই করা অত্যন্ত জরুরি। ভুল JSON বা অ্যাক্সেস-অযোগ্য ফাইল নীরবে ব্যর্থ হবে।
অফিসিয়াল স্টেটমেন্ট জেনারেটর এবং ভ্যালিডেটর টুলটি ব্যবহার করুন।

- আপনার সাইটের ডোমেইন এবং অ্যাপ প্যাকেজের নাম লিখুন।
- টেস্ট স্টেটমেন্ট-এ ক্লিক করুন।
- টুলটি যাচাই করবে যে
assetlinks.jsonফাইলটি সঠিকভাবে হোস্ট করা হয়েছে কিনা এবং এতে বৈধ অ্যাসোসিয়েশন রয়েছে কিনা।
৫. একাধিক ওয়েবসাইটের মধ্যে ক্রেডেনশিয়াল শেয়ার করা

যদি আপনার একাধিক ওয়েবসাইট একই লগইন সিস্টেম ব্যবহার করে (উদাহরণস্বরূপ, example.com এবং example.co.uk ), তাহলে আপনি সেগুলোকে অ্যাফিলিয়েটেড হিসেবে ঘোষণা করতে পারেন, যাতে তাদের মধ্যে ক্রেডেনশিয়াল শেয়ার করা যায়।
একাধিক ওয়েবসাইটের মধ্যে পাসওয়ার্ড শেয়ার করুন
ওয়েবসাইটগুলোর মধ্যে পাসওয়ার্ড শেয়ার করার জন্য, আপনি delegate_permission/common.get_login_creds ব্যবহার করে একটি web -টু- web অ্যাসোসিয়েশন ঘোষণা করতে পারেন।
উদাহরণস্বরূপ, example.com থেকে example.co.uk সাথে পাসওয়ার্ড শেয়ার করার জন্য, https://example.com/.well-known/assetlinks.json এ হোস্ট করা assetlinks.json ফাইলটিতে অবশ্যই example.co.uk লক্ষ্য করে একটি স্টেটমেন্ট অন্তর্ভুক্ত থাকতে হবে:
[{
"relation": ["delegate_permission/common.get_login_creds"],
"target": {
"namespace": "web",
"site": "https://example.co.uk"
}
}]
একইভাবে, https://example.co.uk/.well-known/assetlinks.json অবশ্যই example.com লক্ষ্য করে একটি স্টেটমেন্ট অন্তর্ভুক্ত থাকতে হবে।
একাধিক ওয়েবসাইটের মধ্যে পাসকি শেয়ার করুন
একাধিক ওয়েবসাইটকে একই পাসকি শেয়ার করার অনুমতি দিতে, তাদের অবশ্যই একই রিলায়িং পার্টি আইডি (RP ID) ব্যবহার করতে হবে। WebAuthn এবং পাসকি-তে, RP ID ডোমেইন নামের মাধ্যমে একটি ক্রেডেনশিয়ালের পরিধি নির্দিষ্ট করে। যখন আপনি একটি পাসকি তৈরি করেন, তখন এটি একটি নির্দিষ্ট RP ID-র সাথে যুক্ত থাকে এবং শুধুমাত্র সেইসব ডোমেইনে ব্যবহার করা যায় যা সেই ID-র পরিধির মধ্যে পড়ে। আপনার RP ID সঠিকভাবে নির্ধারণ করা সাবডোমেইন, ক্রস-সাইট অরিজিন এবং ফার্স্ট-পার্টি মোবাইল অ্যাপ জুড়ে একটি নির্বিঘ্ন পাসকি অভিজ্ঞতা নিশ্চিত করে। আপনি "আন্ডারস্ট্যান্ডিং রিলায়িং পার্টি আইডি (RP ID)" -তে RP ID সেট করা সম্পর্কে আরও জানতে পারেন। রিলেটেড অরিজিন রিকোয়েস্ট-এর মাধ্যমে, একটি ওয়েবসাইট অন্যান্য অরিজিন নির্দিষ্ট করতে পারে যেগুলো তার RP ID ব্যবহার করার অনুমতি পাবে, যা ব্যবহারকারীদের আপনার পরিচালিত একাধিক সাইটে একই পাসকি পুনরায় ব্যবহার করার সুযোগ দেয়। মনে রাখবেন যে এটি একটি ওয়েবসাইট এবং একটি অ্যান্ড্রয়েড অ্যাপের মধ্যে পাসকি শেয়ার করার থেকে ভিন্ন, যা ডিজিটাল অ্যাসেট লিঙ্ক-এ delegate_permission/common.handle_all_urls ব্যবহার করে।
উদাহরণস্বরূপ, যদি আপনি example.com এবং example.co.uk একই পাসকি ব্যবহার করাতে চান, তাহলে আপনি example.com ক্যানোনিকাল RP ID হিসেবে নির্ধারণ করতে পারেন। এটি কার্যকর হওয়ার জন্য, example.co.uk তার WebAuthn API কলগুলিতে rpId: 'example.com' ব্যবহার করতে হবে, এবং example.com https://example.com/.well-known/webauthn এ একটি ফাইল হোস্ট করে example.co.uk allowlist করতে হবে।
{
"origins": [
"https://example.co.uk"
]
}
এর ফলে example.co.uk example.com এর সাথে যুক্ত পাসকিগুলো তৈরি ও ব্যবহার করতে পারে।
৬. উপসংহার
অভিনন্দন! আপনি সফলভাবে নির্বিঘ্ন ক্রেডেনশিয়াল শেয়ারিং সেট আপ করেছেন।
আপনার ব্যবহারকারীরা এখন আপনার ওয়েবসাইটে একটি পাসওয়ার্ড ও পাসকি সেভ করে তা ব্যবহার করে এক ট্যাপেই আপনার অ্যান্ড্রয়েড অ্যাপে সাইন ইন করতে পারবেন (এবং এর বিপরীতটিও করতে পারবেন)। এই সাধারণ পরিবর্তনটি আপনার সাইন-ইন কনভার্সন রেট এবং ব্যবহারকারীর সন্তুষ্টি উল্লেখযোগ্যভাবে বাড়িয়ে তুলতে পারে।
এরপর কী?
- ডিজিটাল অ্যাসেট লিঙ্কস-এর অফিসিয়াল ডকুমেন্টেশন দেখুন।
- ক্রেডেনশিয়াল শেয়ারিং-এর মৌলিক বিষয়গুলো সম্পর্কে আরও জানুন।
- এর প্রভাব দেখতে ইবে কেস স্টাডিটি পড়ুন।