با استفاده از Auth Tab احراز هویت را ساده کنید

Auth Tab یک جریان احراز هویت ایمن و ساده را برای استفاده در برنامه های Android ارائه می دهد. با ایجاد و راه‌اندازی یک AuthTabIntent ، می‌توانید یک تب سفارشی تخصصی را فراخوانی کنید که برای مدیریت یک تجربه احراز هویت سرتاسر طراحی شده است. زبانه حذف شده است و دارای قابلیت های محدودی است که کاربران را قادر می سازد تا روی کار در حال انجام تمرکز کنند. پس از تکمیل، برگه با استفاده از https یا طرح‌واره‌های سفارشی، به برنامه شما باز می‌گردد.

یک برگه سفارشی کاملاً برجسته
شکل 1. برگه سفارشی کاملاً برجسته است.
برگه Auth حاوی حداقل عملکرد
شکل 2. Auth Tab با حداقل قابلیت ها.

از Chrome 132، Auth Tab می‌تواند مستقیماً جایگزین ادغام‌های احراز هویت برگه‌های سفارشی موجود شود. برای کاربرانی که دستگاه‌هایشان از برگه Auth پشتیبانی نمی‌کنند، بازگشت به برگه‌های سفارشی خودکار است. انتقال از برگه های سفارشی به برگه Auth می تواند با تغییر چند خط کد انجام شود.

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

با Auth Tab، یک برنامه مشتری یک تب سفارشی تخصصی راه اندازی می کند که یک پنجره مرورگر را ارائه می دهد که یک URL را با صفحه تأیید اعتبار مورد انتظار بارگیری می کند. پس از تکمیل، برگه Auth نتیجه احراز هویت را با استفاده از یک تماس برگشتی برمی گرداند.

پس از احراز هویت، هنگامی که یک پیمایش به URI تغییر مسیر برگشت به تماس قبلاً ارائه شده رخ می دهد، تغییر مسیر گرفته می شود و با استفاده از پاسخ به تماس به برنامه مشتری بازگردانده می شود. برای تغییر مسیرها با استفاده از طرح https، مرورگر تأیید می‌کند که دامنه تغییر مسیر و برنامه مشتری با استفاده از پیوندهای دارایی دیجیتال متعلق به یک ناشر است.

مشتری URI پیمایش شده را با طرح تغییر مسیر (یا برای https، هدایت مجدد میزبان و مسیر) با استفاده از پاسخ تماس ارائه شده دریافت می کند. این داده ها شامل کد نتیجه و همچنین سایر داده های ارائه شده توسط رابط احراز هویت است. می‌توانید از این داده‌ها برای تأیید احراز هویت یا رسیدگی به سناریوهای ناموفق استفاده کنید.

چرا تب Auth؟

قبل از Auth Tab، می‌توانید از یک Tabs استاندارد استاندارد برای تقویت جریان‌های احراز هویت استفاده کنید. برگه Auth ترجیح داده می شود زیرا امنیت پیشرفته، تجربه ساده و همچنین برخی از موارد داخلی را برای احراز هویت از کد مشتری خلاصه می کند. به این دلایل متوجه خواهید شد که Auth Tab تجربه بهتری را ارائه می دهد.

امنیت تقویت شده

در یک پیاده سازی معمولی Custom Tab، برای دریافت داده ها از پنجره مرورگر که احراز هویت مدیریت می شود، یک هدف مورد نیاز است. این به کد اضافی نیاز دارد و برنامه شما را در معرض تداخل بالقوه در قصد شما قرار می دهد. با یک برگه Auth، داده ها با استفاده از یک تماس با انتقال مستقیم داده بین API Android و برنامه مشتری دریافت می شوند.

یک تجربه کارآمد

در یک تب سفارشی، کاربر به ویژگی‌های اضافی در مرورگر دسترسی دارد که ممکن است برای یک جریان احراز هویت نامطلوب باشد. Auth Tab یک تجربه باریک را ارائه می دهد که اکثر گزینه های سفارشی سازی موجود در یک Tab Custom استاندارد را حذف می کند. برای مرورگرهای Chrome، این شامل دکمه کوچک‌سازی، منوی متنی با فشار طولانی، و لمس برای جستجو، و همچنین موارد منو برای باز کردن در Chrome ، نشانک‌گذاری، دانلود و اشتراک‌گذاری و افزودن به صفحه اصلی است.

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

انتزاع داده ها

پیاده‌سازی Auth Tab به تنهایی نیاز به قصد دریافت داده‌ها از مرورگر و همچنین فیلترهای intent در AndroidManifest.xml را که قبلاً برای احراز هویت برای درست کار کردن لازم بود، از بین می‌برد. این پیچیدگی را از سمت مشتری حذف می کند. برخی از این ویژگی‌ها همچنان می‌توانند در کد کلاینت گنجانده شوند تا در شرایطی که برگه Auth در دستگاه‌های کاربر در دسترس نیست، سازگاری با برگه‌های سفارشی را فراهم کند.

تب Auth را پیاده سازی کنید

Auth Tab به کتابخانه تأیید اعتبار مرورگر AndroidX نیاز دارد. کتابخانه مرورگر AndroidX را می توان در بخش وابستگی ها در فایل build.gradle پروژه اضافه کرد. APIها به صورت آلفا موجود هستند. موارد زیر را به فایل ساخت خود اضافه کنید:

dependencies {
    implementation 'androidx.browser:browser:1.9.0-alpha01'
}

قبل از راه‌اندازی برگه Auth، یک ActivityResultLauncher اعلام کنید که یک ActivityResultCaller و همچنین ActivityResultCallback می‌گیرد. این کار قبل از ایجاد اکتیویتی یا قطعه انجام می شود:

// In your activity

private final ActivityResultLauncher<Intent> mLauncher =
    AuthTabIntent.registerActivityResultLauncher(this, this::handleAuthResult);

private void handleAuthResult(AuthResult result) {
    String message = switch (result.resultCode) {
        case AuthTabIntent.RESULT_OK -> "Received auth result.";
        case AuthTabIntent.RESULT_CANCELED -> "AuthTab canceled.";
        case AuthTabIntent.RESULT_VERIFICATION_FAILED -> "Verification failed.";
        case AuthTabIntent.RESULT_VERIFICATION_TIMED_OUT -> "Verification timed out.";
    }

    if (result.resultCode == AuthTabIntent.RESULT_OK) {
        message += " Uri: " + result.resultUri;
    }

    Toast.makeText(this, message, Toast.LENGTH_LONG).show();  
}

سپس، از AuthTabIntent.Builder برای ساختن یک AuthTabIntent استفاده کنید، سپس متد launch را فراخوانی کنید. روش های راه اندازی یکی از دو مجموعه پارامتر را بر اساس طرح مورد نیاز شما می پذیرند:

  • redirectScheme : برای یک طرح تغییر مسیر سفارشی، مرورگر URI را با طرح ارائه شده تغییر مسیر داده و برمی گرداند.

  • redirectHost, redirectPath : برای طرح‌های تغییر مسیر https، API به یک میزبان و مسیر جداگانه برای مرورگر نیاز دارد تا ریدایرکت را شناسایی کند و URI را برگرداند. هنگام استفاده از https، تأیید پیوند دارایی دیجیتال مورد نیاز است.

private void launchAuthTab() {
    AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
    authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth"), "mycustomscheme");
}

private void launchAuthTabHttps() {
    String host = "your_host";
    String path = "your_path";
    AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
    authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);
}

انتقال از برگه های سفارشی به برگه Auth

اجرای احراز هویت برگه‌های سفارشی موجود خود را با تغییر هدف Tabs سفارشی خود به قصد Tab Auth جدید به‌روزرسانی کنید. پس از افزودن کد، محل Custom Tabs intent را پیدا کرده و آن را به Auth Tab جدید تغییر دهید.

CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();
customTabsIntent.launchUrl(context, uri)

// change to -->

AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();

authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", "mycustomscheme");

/* - OR - */

authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);

بازگشت به برگه های سفارشی

برخی از پیاده‌سازی‌ها می‌توانند به احراز هویت نیاز داشته باشند، جایی که دستگاه کاربر برای مدیریت Tab Auth مجهز نیست. برای مثال، اگر مرورگر پیش‌فرض از Auth Tab پشتیبانی نکند یا نسخه مرورگر پیش‌فرض در سطح مورد نیاز نباشد، ممکن است این اتفاق بیفتد. در این موارد یک هدف Tab Auth به طور خودکار یک Tab Custom را برای مرورگرهایی که از Tabs پشتیبانی می کنند راه اندازی می کند.

برای رسیدگی به این وضعیت، پیاده‌سازی Auth Tab را اضافه کنید، در حالی که کد Tabs سفارشی موجود خود را به‌عنوان جریان‌های auth مدیریت می‌کند.

کاربرانی که دستگاه‌های دارای برگه تأیید اعتبار دارند، جریان برگه تأیید جدید را مشاهده می‌کنند، در حالی که دیگران به پیاده‌سازی برگه‌های سفارشی قدیمی بازگشته‌اند. مراقب داده‌هایی باشید که می‌توانند به ActivityResultCallback یا به قصد Activity شما برسند. توجه داشته باشید که اگر AuthTabIntent برای راه‌اندازی تجربه بازگشتی استفاده شود و Auth Tab توسط مرورگر فعلی پشتیبانی نشود، برنامه شما نتیجه Activity.RESULT_CANCELED را زمانی که برگه سفارشی بسته می‌شود، دریافت می‌کند.

نمونه‌ای از پیاده‌سازی Auth Tab با بازگشت به برگه‌های سفارشی را می‌توانید در کتابخانه Android Browser Helper پیدا کنید.

منابع اضافی