اشتراک‌گذاری یکپارچه اعتبارنامه‌ها را در وب‌سایت‌ها و برنامه‌های اندروید راه‌اندازی کنید

۱. مرور کلی

آیا کاربران شما از طریق وب‌سایت‌ها و برنامه‌های اندروید به خدمات شما دسترسی دارند؟ مجبور کردن آنها به ورود جداگانه در هر پلتفرم، اصطکاک غیرضروری ایجاد می‌کند و می‌تواند منجر به ترک خدمت شود.

پیوندهای دارایی دیجیتال (DAL) این مشکل را با امکان اعلام ارتباط بین وب‌سایت‌ها و برنامه‌های شما حل می‌کند. این به مدیران رمز عبور، مانند مدیر رمز عبور گوگل، اجازه می‌دهد رمزهای عبور و کلیدهای عبور ذخیره شده را بین آنها به اشتراک بگذارند.

به طور خاص، پیکربندی فایل پیوندهای دارایی دیجیتال شما بسته به آنچه می‌خواهید به اشتراک بگذارید، به روابط متفاوتی نیاز دارد:

  • برای رمزهای عبور: گنجاندن delegate_permission/common.get_login_creds به مدیران رمز عبور اجازه می‌دهد تا رمزهای عبور ذخیره شده را بین وب‌سایت و برنامه شما به اشتراک بگذارند.
  • برای کلیدهای عبور: از آنجا که کلیدهای عبور کاملاً به یک دامنه وب خاص محدود هستند، اندروید به مدرک مالکیت دامنه نیاز دارد. بنابراین، باید delegate_permission/common.handle_all_urls را وارد کنید. اگرچه ممکن است این را به عنوان مجوزی که برای پیوندهای برنامه اندروید (پیوند عمیق) استفاده می‌شود، بشناسید، اما این یک الزام اکید برای مجاز کردن استفاده از کلیدهای عبور ایجاد شده در یک پلتفرم در پلتفرم دیگر نیز هست.

نتیجه؟ کاربران می‌توانند با استفاده از رمزهای عبور یا کلیدهای عبور ذخیره شده برای فقط یکی از پلتفرم‌های وابسته شما، به طور یکپارچه وارد سیستم شوند.

رمزهای عبور در سراسر ملک‌ها موجود است

پیاده‌سازی اشتراک‌گذاری یکپارچه‌ی اعتبارنامه‌ها می‌تواند تجربه‌ی کاربری را به طور قابل توجهی بهبود بخشد. به عنوان مثال، eBay پس از پیاده‌سازی DAL برای اشتراک‌گذاری اعتبارنامه‌ها، شاهد افزایش 10 درصدی موفقیت در ورود به سیستم بود .

در این آزمایشگاه کد، یاد خواهید گرفت که چگونه از پیوندهای دارایی دیجیتال برای فعال کردن اشتراک‌گذاری اعتبارنامه بین وب‌سایت و برنامه اندروید خود استفاده کنید.

پیش‌نیازها

آنچه یاد خواهید گرفت

  • نحوه تنظیم اشتراک‌گذاری اعتبارنامه با استفاده از کنسول گوگل پلی (توصیه شده).
  • چگونه به صورت دستی یک فایل assetlinks.json ایجاد کنیم.
  • نحوه پیکربندی یک برنامه اندروید برای اتصال دستی.
  • نحوه فعال کردن کلیدهای عبور در یک برنامه اندروید با مرتبط کردن آن با دامنه یک وب‌سایت.
  • نحوه استفاده از ابزارها برای تولید و اعتبارسنجی تنظیمات شما.

آنچه نیاز دارید

  • یک وب‌سایت : قابلیت میزبانی یک فایل JSON در https://{your-domain}/.well-known/assetlinks.json .
  • یک برنامه اندروید :
    • برای روش کنسول پلی : برنامه‌ای که در گوگل پلی منتشر شده باشد.
    • برای روش دستی : یک پروژه اندروید که می‌توانید آن را تغییر داده و بسازید. توجه داشته باشید که برای اینکه اشتراک‌گذاری اعتبارنامه با Google Password Manager کار کند، برنامه باید در Google Play منتشر شده باشد.

چگونه کار می‌کند؟

برای اینکه اشتراک‌گذاری اعتبارنامه‌ها (credential sharing) کار کند، باید یک اعتماد دوطرفه ایجاد کنید:

  1. وب -> برنامه : وب‌سایت شما باید میزبان یک فایل assetlinks.json باشد که اعلام می‌کند به برنامه اندروید شما اعتماد دارد.
  2. اپلیکیشن -> وب : اپلیکیشن اندروید شما باید طوری پیکربندی شود که به وب‌سایت شما اعتماد کند.

ما دو روش برای انجام این کار را پوشش خواهیم داد: روش خودکار با استفاده از کنسول گوگل پلی (توصیه می‌شود) و روش دستی با استفاده مستقیم از Digital Asset Links.

۲. راه‌اندازی با استفاده از کنسول گوگل پلی (توصیه می‌شود)

ساده‌ترین راه برای فعال کردن اشتراک‌گذاری اعتبارنامه بین وب‌سایت و برنامه اندروید شما از طریق کنسول گوگل پلی است. این روش به شما امکان می‌دهد بدون نیاز به تغییر مانیفست برنامه یا انتشار نسخه جدیدی از برنامه، برنامه خود را با وب‌سایت خود مرتبط کنید. گوگل پلی این ارتباط سمت برنامه را برای شما مدیریت می‌کند.

پیش‌نیازها

  • مجوزهای کنسول بازی برای دسترسی به صفحه پیوندهای عمیق .
  • امکان انتشار فایل /.well-known/assetlinks.json در دامنه شما.

برای اطلاعات بیشتر در مورد لینک‌های عمیق، به لینک‌های برنامه اندروید مراجعه کنید.

مراحل

  1. در کنسول Play ، به Grow > Deep links بروید.
  2. اگر دامنه شما در فهرست نیست، روی افزودن دامنه در زیر پیکربندی برنامه کلیک کنید.
  3. دامنه خود را پیدا کنید و ستون اشتراک‌گذاری اعتبارنامه (Credential sharing) را بیابید. روی روشن کردن (Turn on) کلیک کنید (یا مطمئن شوید که گزینه‌ی «فعال کردن اشتراک‌گذاری اعتبارنامه» (Enable credential sharing ) برای دامنه‌های جدید فعال باشد).
  4. قطعه کد JSON تولید شده توسط Play Console را کپی کنید.
  5. این محتوای JSON را در https://{your-domain}/.well-known/assetlinks.json منتشر کنید. (اگر از قبل این فایل را دارید، عبارت جدید را به آن اضافه کنید).
  6. در کنسول Play، روی «ایجاد ارتباط وب‌سایت» یا «فعال کردن اشتراک‌گذاری اعتبارنامه» کلیک کنید.

کنسول Play اکنون تنظیمات میزبانی شما را تأیید می‌کند.

لینک‌های عمیق کنسول بازی

برای اینکه اشتراک‌گذاری اعتبارنامه‌ها (credential sharing) به درستی انجام شود، میزبان وب‌سایت شما باید شرایط زیر را داشته باشد:

  • URL از طریق HTTPS قابل دسترسی است.
  • سرور با Content-Type: application/json پاسخ می‌دهد.
  • URL بدون ریدایرکت قابل دسترسی است.

پس از تأیید، اشتراک‌گذاری اعتبارنامه فعال می‌شود! ممکن است ۱ تا ۲ هفته طول بکشد تا تغییرات پیکربندی منتشر شوند.

۳. با استفاده از Digital Asset Links به صورت دستی تنظیم کنید

به کنترل بیشتری نیاز دارید؟ یا به کنسول Play دسترسی ندارید؟ می‌توانید اشتراک‌گذاری اعتبارنامه‌ها بین وب‌سایت و برنامه اندروید خود را به صورت دستی پیکربندی کنید. این شامل دو کار اصلی است: میزبانی فایل JSON در سایت شما و به‌روزرسانی مانیفست برنامه اندروید شما.

۱. اثر انگشت دیجیتال برنامه خود را دریافت کنید

قبل از راه‌اندازی اشتراک‌گذاری یکپارچه اعتبارنامه، مطمئن شوید که موارد زیر را برای هر پلتفرم دارید:

برای هر برنامه اندروید:

۲. فایل پیوست را ایجاد کنید

شما باید یک فایل 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

برای اینکه اشتراک‌گذاری اعتبارنامه‌ها (credential sharing) به درستی انجام شود، میزبان وب‌سایت شما باید شرایط زیر را داشته باشد:

  • URL از طریق HTTPS قابل دسترسی است.
  • سرور با Content-Type: application/json پاسخ می‌دهد.
  • URL بدون ریدایرکت قابل دسترسی است.

وب به اپلیکیشن

۴. برنامه اندروید خود را پیکربندی کنید

حالا، به برنامه اندروید خود بگویید که به وب‌سایت اعتماد کند. شما یک ارجاع در مانیفست اضافه خواهید کرد که به یک فایل منبع حاوی URL assetlinks.json شما اشاره می‌کند.

۱. یک منبع رشته‌ای اضافه کنید

در 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 ، یک تگ <meta-data> درون عنصر <application> اضافه کنید که به این منبع رشته‌ای اشاره کند:

<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>

پس از تکمیل این مراحل و انتشار نسخه جدید برنامه اندروید شما، مدیران رمز عبوری که از Digital Asset Links پشتیبانی می‌کنند (مانند Google Password Manager) می‌توانند هنگام تلاش کاربر برای ورود به com.example.app و برعکس، اطلاعات کاربری ذخیره شده برای www.example.com را پیشنهاد دهند.

۴. تنظیمات خود را تأیید کنید

قبل از ارسال، تأیید پیکربندی پیوندهای دارایی دیجیتال (Digital Asset Links) بسیار مهم است. فایل‌های JSON نادرست یا غیرقابل دسترس، بی‌سروصدا از کار می‌افتند.

از ابزار رسمی تولیدکننده و اعتبارسنج بیانیه استفاده کنید.

تولیدکننده و اعتبارسنج دستور

  1. دامنه سایت و نام بسته برنامه خود را وارد کنید.
  2. روی عبارت آزمون کلیک کنید.
  3. این ابزار بررسی می‌کند که آیا فایل assetlinks.json به درستی میزبانی شده و حاوی ارتباط معتبر است یا خیر.

۵. اشتراک‌گذاری اعتبارنامه‌ها بین چندین وب‌سایت

وب به اپلیکیشن

اگر چندین وب‌سایت دارید که از یک سیستم ورود به سیستم مشترک استفاده می‌کنند (مثلاً example.com و example.co.uk )، می‌توانید آنها را به عنوان وابسته اعلام کنید تا اعتبارنامه‌ها بین آنها به اشتراک گذاشته شود.

اشتراک‌گذاری رمزهای عبور بین چندین وب‌سایت

برای اشتراک‌گذاری رمزهای عبور بین وب‌سایت‌ها، می‌توانید با استفاده از delegate_permission/common.get_login_creds یک ارتباط web به web اعلام کنید.

برای مثال، برای اینکه example.com بخواهد رمزهای عبور را با example.co.uk به اشتراک بگذارد، فایل assetlinks.json که در https://example.com/.well-known/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 دامنه یک اعتبارنامه را با نام دامنه مشخص می‌کند. وقتی یک کلید عبور ایجاد می‌کنید، به یک شناسه RP خاص گره خورده است و فقط در دامنه‌هایی که در محدوده آن شناسه قرار می‌گیرند، قابل استفاده است. تعریف صحیح شناسه RP شما، یک تجربه یکپارچه از کلید عبور را در زیر دامنه‌ها، مبدأهای بین سایتی و برنامه‌های تلفن همراه شخص اول تضمین می‌کند. می‌توانید در بخش «درک شناسه طرف مرجع (RP ID)» درباره تنظیم شناسه RP بیشتر بیاموزید. با درخواست‌های مبدأ مرتبط ، یک وب‌سایت می‌تواند مبدأهای دیگری را که مجاز به استفاده از شناسه RP آن هستند، مشخص کند و به کاربران اجازه دهد از همان کلید عبور در چندین سایتی که شما اداره می‌کنید، دوباره استفاده کنند. توجه داشته باشید که این با اشتراک‌گذاری کلیدهای عبور بین یک وب‌سایت و یک برنامه اندروید متفاوت است، که از delegate_permission/common.handle_all_urls در Digital Asset Links استفاده می‌کند.

برای مثال، اگر می‌خواهید example.com و example.co.uk کلیدهای عبور را به اشتراک بگذارند، می‌توانید تصمیم بگیرید که example.com شناسه RP استاندارد باشد. برای اینکه این کار انجام شود، example.co.uk باید rpId: 'example.com' در فراخوانی‌های WebAuthn API خود استفاده کند و example.com باید فایلی را در https://example.com/.well-known/webauthn میزبانی کند تا example.co.uk در لیست مجاز قرار دهد:

{
  "origins": [
    "https://example.co.uk"
  ]
}

این به example.co.uk اجازه می‌دهد تا کلیدهای عبور مرتبط با example.com را ایجاد و استفاده کند.

۶. نتیجه‌گیری

تبریک می‌گویم! شما با موفقیت اشتراک‌گذاری یکپارچه‌ی اعتبارنامه را راه‌اندازی کردید.

کاربران شما اکنون می‌توانند رمز عبور و کلید عبور را در وب‌سایت شما ذخیره کنند و از آن برای ورود به برنامه اندروید شما با یک لمس (و برعکس) استفاده کنند. این تغییر ساده می‌تواند نرخ تبدیل ورود به سیستم و رضایت کاربر را به میزان قابل توجهی افزایش دهد.

بعدش چی؟