Đơn giản hoá quy trình xác thực bằng Thẻ xác thực

Thẻ xác thực cung cấp một quy trình xác thực an toàn và đơn giản để sử dụng trong các ứng dụng Android. Bằng cách tạo và chạy AuthTabIntent, bạn có thể gọi một Thẻ tuỳ chỉnh chuyên biệt được thiết kế để quản lý trải nghiệm xác thực toàn diện. Thẻ này được rút gọn và có các chức năng hạn chế, cho phép người dùng tập trung vào nhiệm vụ đang thực hiện. Khi hoàn tất, thẻ sẽ gọi lại ứng dụng của bạn bằng kết quả sử dụng https hoặc giản đồ tuỳ chỉnh.

Thẻ tuỳ chỉnh có đầy đủ tính năng
Hình 1. Tab tuỳ chỉnh có đầy đủ tính năng.
Thẻ Xác thực chứa chức năng tối thiểu
Hình 2. Thẻ xác thực có chức năng tối thiểu.

Kể từ Chrome 132, Thẻ xác thực có thể trực tiếp thay thế các tính năng tích hợp xác thực hiện có của Thẻ tuỳ chỉnh. Đối với những người dùng có thiết bị không hỗ trợ Thẻ xác thực, hệ thống sẽ tự động chuyển sang Thẻ tuỳ chỉnh. Bạn có thể di chuyển từ Thẻ tuỳ chỉnh sang Thẻ xác thực bằng cách sửa đổi một vài dòng mã.

Cách hoạt động

Với Thẻ xác thực, ứng dụng khách sẽ khởi chạy một Thẻ tuỳ chỉnh chuyên biệt hiển thị cửa sổ trình duyệt đang tải một URL có trang xác thực dự kiến. Sau khi hoàn tất, Thẻ xác thực sẽ trả về kết quả xác thực bằng lệnh gọi lại.

Sau khi xác thực, khi xảy ra thao tác điều hướng đến URI chuyển hướng lệnh gọi lại đã cung cấp trước đó, lệnh chuyển hướng sẽ được ghi lại và trả về ứng dụng khách bằng lệnh gọi lại. Đối với các lệnh chuyển hướng sử dụng giản đồ https, trình duyệt sẽ xác minh rằng miền chuyển hướng và ứng dụng khách thuộc quyền sở hữu của cùng một nhà xuất bản bằng cách sử dụng Đường liên kết đến tài sản kỹ thuật số.

Ứng dụng nhận URI đã điều hướng bằng lược đồ chuyển hướng (hoặc đối với https, máy chủ và đường dẫn chuyển hướng) bằng cách sử dụng lệnh gọi lại được cung cấp. Dữ liệu này bao gồm mã kết quả cũng như mọi dữ liệu khác do giao diện xác thực cung cấp. Bạn có thể sử dụng dữ liệu này để xác minh quy trình xác thực hoặc xử lý các trường hợp không thành công.

Tại sao nên dùng thẻ Auth?

Trước khi có Thẻ xác thực, bạn có thể sử dụng ý định Thẻ tuỳ chỉnh tiêu chuẩn để hỗ trợ các luồng xác thực. Bạn nên sử dụng Thẻ xác thực vì thẻ này cung cấp khả năng bảo mật nâng cao, trải nghiệm đơn giản và cũng tóm tắt một số nội dung nội bộ để xác thực từ mã ứng dụng. Vì những lý do này, bạn sẽ thấy Thẻ xác thực mang lại trải nghiệm tốt hơn.

Bảo mật nâng cao

Trong quá trình triển khai Thẻ tuỳ chỉnh thông thường, bạn cần có một ý định để nhận dữ liệu từ cửa sổ trình duyệt xử lý việc xác thực. Điều này đòi hỏi thêm mã và khiến ứng dụng của bạn có thể bị can thiệp vào ý định. Với Thẻ xác thực, dữ liệu được nhận bằng lệnh gọi lại, với việc chuyển dữ liệu trực tiếp giữa API Android và ứng dụng khách.

Trải nghiệm đơn giản

Trong Thẻ tuỳ chỉnh, người dùng có quyền truy cập vào các tính năng bổ sung trong trình duyệt mà có thể không mong muốn cho luồng xác thực. Thẻ xác thực cung cấp trải nghiệm tinh giản, xoá hầu hết các tuỳ chọn tuỳ chỉnh có trong Thẻ tuỳ chỉnh tiêu chuẩn. Đối với trình duyệt Chrome, thao tác này bao gồm nút thu nhỏ, trình đơn theo ngữ cảnh nhấn và giữ và chạm để tìm kiếm, cũng như các mục trình đơn để Mở trong Chrome, đánh dấu trang, tải xuống và chia sẻ, cũng như Thêm vào Màn hình chính.

Thẻ xác thực vẫn giữ lại các tính năng cho trình duyệt để tự động điền mật khẩu và thông tin thanh toán đã lưu trước đó, di chuyển lui hoặc tiến, làm mới, hiển thị thông tin trang, yêu cầu phiên bản trang dành cho máy tính và cung cấp bản dịch.

Trừu tượng dữ liệu

Chỉ cần triển khai Thẻ xác thực, bạn không cần phải có ý định nhận dữ liệu từ trình duyệt, cũng như các bộ lọc ý định trong AndroidManifest.xml trước đây cần thiết để quá trình xác thực hoạt động đúng cách. Điều này giúp loại bỏ sự phức tạp ở phía máy khách. Một số tính năng trong số này vẫn có thể được đưa vào mã ứng dụng để cung cấp khả năng tương thích ngược với Thẻ tuỳ chỉnh trong trường hợp Thẻ xác thực không có trên thiết bị của người dùng.

Triển khai thẻ Xác thực

Thẻ xác thực yêu cầu thư viện xác thực trình duyệt AndroidX. Bạn có thể thêm Thư viện trình duyệt AndroidX trong phần phần phụ thuộc của tệp build.gradle của dự án. Các API này có trong bản dựng alpha. Thêm nội dung sau vào tệp bản dựng:

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

Trước khi chạy Thẻ xác thực, hãy khai báo ActivityResultLauncher nhận ActivityResultCaller cũng như ActivityResultCallback. Bạn thực hiện việc này trước khi tạo hoạt động hoặc mảnh:

// 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();  
}

Tiếp theo, hãy sử dụng AuthTabIntent.Builder để tạo AuthTabIntent, sau đó gọi phương thức launch. Phương thức khởi chạy chấp nhận một trong hai nhóm tham số dựa trên giao thức mà bạn yêu cầu:

  • redirectScheme: Đối với lược đồ chuyển hướng tuỳ chỉnh, trình duyệt sẽ chuyển hướng và trả về URI có lược đồ được cung cấp.

  • redirectHost, redirectPath: Đối với các giao thức chuyển hướng https, API yêu cầu một máy chủ lưu trữ và đường dẫn riêng biệt để trình duyệt phát hiện lệnh chuyển hướng và trả về URI. Khi sử dụng https, bạn phải xác minh Đường liên kết đến tài sản kỹ thuật số.

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);
}

Di chuyển từ Thẻ tuỳ chỉnh sang Thẻ xác thực

Cập nhật cách triển khai quy trình xác thực Thẻ tuỳ chỉnh hiện có bằng cách sửa đổi ý định Thẻ tuỳ chỉnh thành ý định Thẻ xác thực mới. Sau khi thêm mã, hãy tìm ý định Thẻ tuỳ chỉnh và sửa đổi ý định đó thành ý định Thẻ xác thực mới.

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

Dự phòng cho thẻ tuỳ chỉnh

Một số cách triển khai có thể yêu cầu xác thực khi thiết bị của người dùng không được trang bị để xử lý Thẻ xác thực. Ví dụ: điều này có thể xảy ra nếu trình duyệt mặc định không hỗ trợ Thẻ xác thực hoặc nếu phiên bản của trình duyệt mặc định không ở cấp độ bắt buộc. Trong những trường hợp này, ý định Thẻ xác thực sẽ tự động khởi chạy Thẻ tuỳ chỉnh cho các trình duyệt hỗ trợ Thẻ tuỳ chỉnh.

Để xử lý linh hoạt tình huống này, hãy thêm cách triển khai Thẻ xác thực trong khi vẫn giữ mã Thẻ tuỳ chỉnh hiện có để xử lý các luồng xác thực làm phương án dự phòng.

Người dùng có thiết bị hỗ trợ Thẻ xác thực sẽ thấy quy trình Thẻ xác thực mới, còn những người dùng khác sẽ quay lại quy trình triển khai Thẻ tuỳ chỉnh cũ. Hãy cẩn thận xử lý dữ liệu có thể đến ActivityResultCallback hoặc ý định Hoạt động của bạn. Xin lưu ý rằng nếu AuthTabIntent được dùng để khởi chạy trải nghiệm dự phòng và trình duyệt hiện tại không hỗ trợ Thẻ xác thực, thì ứng dụng của bạn sẽ nhận được kết quả Activity.RESULT_CANCELED khi thẻ tuỳ chỉnh bị đóng.

Bạn có thể tìm thấy ví dụ về cách triển khai Thẻ xác thực với phương thức dự phòng là Thẻ tuỳ chỉnh trong thư viện Trình trợ giúp trình duyệt Android.

Tài nguyên khác