بررسی اجمالی مجوز

مجوز Google Play یک سرویس مبتنی بر شبکه است که به برنامه اجازه می‌دهد از سرور مجوز Google Play مطمئن درخواست کند تا مشخص کند آیا برنامه برای کاربر فعلی دستگاه مجوز دارد یا خیر. خدمات صدور مجوز بر اساس توانایی سرور مجوز Google Play برای تعیین اینکه آیا یک کاربر خاص مجوز استفاده از یک برنامه خاص را دارد یا خیر، است. اگر کاربر خریدار ثبت شده برنامه باشد، Google Play یک کاربر را دارای مجوز می داند.

درخواست زمانی شروع می شود که برنامه شما درخواستی را به سرویسی که توسط برنامه مشتری Google Play میزبانی می شود، ارسال می کند. سپس برنامه Google Play درخواستی را به سرور صدور مجوز ارسال می کند و نتیجه را دریافت می کند. برنامه Google Play نتیجه را به برنامه شما ارسال می کند، که می تواند در صورت لزوم استفاده بیشتر از برنامه را مجاز یا غیرممکن کند.

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

شکل 1. برنامه شما یک بررسی مجوز را از طریق کتابخانه تأیید مجوز و سرویس گیرنده Google Play، که ارتباط با سرور Google Play را مدیریت می کند، آغاز می کند.

توجه: قبلاً می‌توانستید یک برنامه را با آپلود یک نسخه «پیش‌نویس» منتشر نشده آزمایش کنید. این قابلیت دیگر پشتیبانی نمی شود. در عوض، باید آن را در مسیرهای آزمایشی بسته یا باز منتشر کنید. برای اطلاعات بیشتر، برنامه‌های پیش‌نویس دیگر پشتیبانی نمی‌شوند را ببینید.

برای شناسایی صحیح کاربر و تعیین وضعیت مجوز، سرور صدور مجوز به اطلاعاتی در مورد برنامه و کاربر نیاز دارد - برنامه شما و سرویس گیرنده Google Play با هم کار می کنند تا اطلاعات را جمع آوری کنند و سرویس گیرنده Google Play آن را به سرور ارسال می کند.

برای کمک به اضافه کردن مجوز به برنامه خود، Android SDK مجموعه ای قابل دانلود از منابع کتابخانه را ارائه می دهد که می توانید در پروژه برنامه خود بگنجانید: بسته Google Market Licensing. کتابخانه تأیید مجوز (LVL) کتابخانه‌ای است که می‌توانید به برنامه خود اضافه کنید و تمام ارتباطات مربوط به مجوز با سرویس مجوز Google Play را مدیریت می‌کند. با اضافه شدن LVL به برنامه شما، برنامه شما می تواند وضعیت مجوز خود را برای کاربر فعلی به سادگی با فراخوانی یک متد و اجرای یک callback که پاسخ وضعیت را دریافت می کند، تعیین کند.

برنامه شما مستقیماً از سرور مجوز پرس و جو نمی کند، بلکه در عوض از طریق IPC راه دور با مشتری Google Play تماس می گیرد تا درخواست مجوز را آغاز کند. در درخواست مجوز:

  • برنامه شما ارائه می دهد: نام بسته خود، یک nonce که بعداً برای تأیید هر پاسخی از سرور استفاده می شود، و یک تماس برگشتی که از طریق آن می توان پاسخ را به صورت ناهمزمان برگرداند.
  • سرویس گیرنده Google Play اطلاعات لازم در مورد کاربر و دستگاه را جمع آوری می کند، مانند نام کاربری اصلی حساب Google دستگاه، IMSI، و اطلاعات دیگر. سپس درخواست بررسی مجوز را از طرف برنامه شما به سرور ارسال می کند.
  • سرور Google Play درخواست را با استفاده از تمام اطلاعات موجود ارزیابی می کند و سعی می کند هویت کاربر را تا حد کافی از اطمینان مشخص کند. سپس سرور هویت کاربر را در برابر سوابق خرید برای برنامه شما بررسی می‌کند و یک پاسخ مجوز را برمی‌گرداند که مشتری Google Play آن را از طریق تماس IPC به برنامه شما برمی‌گرداند.

می‌توانید انتخاب کنید که چه زمانی و چند وقت یکبار می‌خواهید برنامه شما مجوز خود را بررسی کند و کنترل کاملی بر نحوه رسیدگی به پاسخ، تأیید داده‌های پاسخ امضا شده و اعمال کنترل‌های دسترسی دارید.

توجه داشته باشید که در طول بررسی مجوز، برنامه شما هیچ اتصال شبکه ای را مدیریت نمی کند یا از هیچ API مرتبط با مجوز در پلتفرم Android استفاده نمی کند.

پاسخ های مجوز امن هستند

برای اطمینان از یکپارچگی هر درخواست مجوز، سرور داده های پاسخ مجوز را با استفاده از یک جفت کلید RSA که منحصراً بین سرور Google Play و شما به اشتراک گذاشته می شود، امضا می کند.

سرویس مجوز برای هر برنامه یک جفت کلید مجوز تولید می‌کند و کلید عمومی را در صفحه سرویس‌ها و APIهای برنامه شما در Play Console نشان می‌دهد. شما باید کلید عمومی را از کنسول Play کپی کرده و در کد منبع برنامه خود جاسازی کنید. سرور کلید خصوصی را به صورت داخلی حفظ می کند و از آن برای امضای پاسخ های مجوز برای برنامه هایی که با آن حساب منتشر می کنید استفاده می کند.

هنگامی که برنامه شما یک پاسخ امضا شده دریافت می کند، از کلید عمومی تعبیه شده برای تأیید داده ها استفاده می کند. استفاده از رمزنگاری کلید عمومی در سرویس صدور مجوز این امکان را برای برنامه کاربردی فراهم می کند تا پاسخ هایی را که دستکاری شده یا جعلی هستند شناسایی کند.

کتابخانه تأیید مجوز

Android SDK یک بسته قابل دانلود به نام بسته مجوز بازار Google ارائه می دهد که شامل کتابخانه تأیید مجوز (LVL) است. LVL روند افزودن مجوز به برنامه شما را بسیار ساده می کند و به اطمینان از اجرای ایمن تر و قوی تر برای برنامه شما کمک می کند. LVL کلاس‌های داخلی را ارائه می‌کند که اکثر عملیات استاندارد یک درخواست مجوز، مانند تماس با مشتری Google Play برای شروع درخواست مجوز و تأیید و تأیید پاسخ‌ها را ارائه می‌کند. همچنین رابط‌هایی را نشان می‌دهد که به شما امکان می‌دهند به راحتی کد سفارشی خود را برای تعریف خط مشی مجوز و مدیریت دسترسی در صورت نیاز برنامه خود وصل کنید. رابط های کلیدی LVL عبارتند از:

Policy
پیاده سازی شما بر اساس پاسخ مجوز دریافتی از سرور و سایر داده های موجود (مانند سرور باطن مرتبط با برنامه شما) تعیین می کند که آیا اجازه دسترسی به برنامه را بدهد یا خیر. پیاده سازی می تواند زمینه های مختلف پاسخ مجوز را ارزیابی کند و در صورت نیاز محدودیت های دیگر را اعمال کند. این پیاده‌سازی همچنین به شما امکان می‌دهد تا کنترل مجوزهایی را که منجر به خطاهایی مانند خطاهای شبکه می‌شود، مدیریت کنید.
LicenseCheckerCallback
پیاده سازی شما دسترسی به برنامه را بر اساس نتیجه مدیریت شی Policy از پاسخ مجوز مدیریت می کند. پیاده سازی شما می تواند دسترسی را به هر طریقی که لازم است مدیریت کند، از جمله نمایش نتیجه مجوز در UI یا هدایت کاربر برای خرید برنامه (اگر در حال حاضر مجوز ندارد).

برای کمک به شما در شروع کار با یک Policy ، LVL دو پیاده سازی کاملاً کامل Policy را ارائه می دهد که می توانید بدون تغییر استفاده کنید یا با نیازهای خود سازگار شوید:

ServerManagedPolicy
یک Policy انعطاف پذیر که از تنظیمات ارائه شده توسط سرور مجوز برای مدیریت ذخیره پاسخ و دسترسی به برنامه در زمانی که دستگاه آفلاین است (مانند زمانی که کاربر در هواپیما است) استفاده می کند. برای اکثر برنامه ها، استفاده از ServerManagedPolicy به شدت توصیه می شود.
StrictPolicy
یک Policy محدودکننده که هیچ داده پاسخی را در حافظه پنهان ذخیره نمی‌کند و تنها زمانی به برنامه اجازه دسترسی می‌دهد که سرور یک پاسخ دارای مجوز را برگرداند.

LVL به عنوان یک بسته قابل دانلود از Android SDK در دسترس است. این بسته شامل خود LVL و یک نمونه برنامه کاربردی است که نشان می دهد چگونه کتابخانه باید با برنامه شما یکپارچه شود و چگونه برنامه شما باید داده های پاسخ، تعامل UI و شرایط خطا را مدیریت کند.

منابع LVL به عنوان یک پروژه کتابخانه اندروید ارائه می شوند، به این معنی که می توانید یک مجموعه واحد از منابع کتابخانه را حفظ کنید و آنها را در چندین برنامه به اشتراک بگذارید. یک محیط آزمایش کامل نیز از طریق SDK در دسترس است، بنابراین می‌توانید اجرای مجوز در برنامه‌های خود را قبل از انتشار، توسعه و آزمایش کنید، حتی اگر به یک دستگاه فیزیکی دسترسی ندارید.

الزامات و محدودیت ها

مجوز Google Play طوری طراحی شده است که به شما امکان می دهد کنترل های مجوز را برای برنامه هایی که از طریق Google Play منتشر می کنید اعمال کنید. این سرویس به گونه ای طراحی نشده است که به شما امکان می دهد دسترسی به برنامه هایی را که از طریق Google Play منتشر نمی شوند یا در دستگاه هایی اجرا می شوند که سرویس گیرنده Google Play را ارائه نمی دهند، کنترل کنید.

در اینجا چند نکته وجود دارد که باید هنگام اجرای مجوز در برنامه خود به خاطر داشته باشید:

  • یک برنامه فقط در صورتی می تواند از این سرویس استفاده کند که سرویس گیرنده Google Play روی دستگاه میزبان خود نصب شده باشد و دستگاه دارای Android 1.5 (سطح API 3) یا بالاتر باشد.
  • برای تکمیل بررسی مجوز، سرور صدور مجوز باید از طریق شبکه قابل دسترسی باشد. شما می توانید رفتارهای ذخیره مجوز را برای مدیریت دسترسی به برنامه خود در زمانی که اتصال شبکه وجود ندارد پیاده سازی کنید.
  • امنیت کنترل های مجوز برنامه شما در نهایت به طراحی پیاده سازی شما بستگی دارد. این سرویس بلوک‌های ساختمانی را فراهم می‌کند که به شما امکان می‌دهد مجوز را به طور ایمن بررسی کنید، اما اجرای واقعی و مدیریت مجوز عواملی هستند که به شما بستگی دارد. با پیروی از بهترین شیوه ها در اسناد زیر، می توانید اطمینان حاصل کنید که پیاده سازی شما ایمن خواهد بود.
  • افزودن مجوز به یک برنامه بر نحوه عملکرد برنامه در هنگام اجرا در دستگاهی که Google Play را ارائه نمی دهد تأثیر نمی گذارد.
  • می‌توانید کنترل‌های مجوز را برای یک برنامه رایگان پیاده‌سازی کنید، اما فقط در صورتی که از این سرویس برای ارائه فایل‌های گسترش APK استفاده می‌کنید.

جایگزینی برای محافظت از کپی

مجوز Google Play یک مکانیسم انعطاف پذیر و امن برای کنترل دسترسی به برنامه های شما است. این به طور موثر جایگزین مکانیسم محافظت از کپی (دیگر پشتیبانی نمی شود) می شود که قبلاً در Google Play ارائه شده بود و پتانسیل توزیع گسترده تری را برای برنامه های خود به شما می دهد.

صدور مجوز به شما امکان می‌دهد به مدل مبتنی بر مجوز بروید که در همه دستگاه‌هایی که به Google Play دسترسی دارند، قابل اجرا است. دسترسی به ویژگی های دستگاه میزبان محدود نمی شود، بلکه به برنامه شما در Google Play (از طریق کلید عمومی برنامه) و خط مشی مجوزی که شما تعریف می کنید، محدود می شود. برنامه شما را می توان بر روی هر دستگاهی در هر فضای ذخیره سازی، از جمله کارت SD، نصب و مدیریت کرد.

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

برای شروع اضافه کردن مجوز برنامه به برنامه خود، به تنظیمات برای صدور مجوز ادامه دهید.