1. Tổng quan
Người dùng có truy cập vào dịch vụ của bạn trên cả trang web và ứng dụng Android không? Việc buộc người dùng đăng nhập riêng trên từng nền tảng sẽ gây ra sự bất tiện không cần thiết và có thể dẫn đến việc người dùng bỏ ngang.
Digital Asset Links (DAL) giải quyết vấn đề này bằng cách cho phép bạn khai báo mối liên kết giữa trang web và ứng dụng. Điều này cho phép các trình quản lý mật khẩu (chẳng hạn như Trình quản lý mật khẩu của Google) chia sẻ mật khẩu và khoá truy cập đã lưu với nhau.
Cụ thể, việc định cấu hình tệp Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số) yêu cầu các mối quan hệ khác nhau, tuỳ thuộc vào nội dung bạn muốn chia sẻ:
- Đối với mật khẩu: Việc thêm
delegate_permission/common.get_login_credscho phép trình quản lý mật khẩu chia sẻ mật khẩu đã lưu giữa trang web và ứng dụng của bạn. - Đối với khoá truy cập: Vì khoá truy cập được liên kết chặt chẽ với một miền cụ thể trên web, nên Android yêu cầu bằng chứng về quyền sở hữu miền. Do đó, bạn phải thêm
delegate_permission/common.handle_all_urls. Mặc dù bạn có thể nhận ra đây là quyền được dùng cho Đường liên kết trong ứng dụng Android (liên kết sâu), nhưng đây cũng là yêu cầu bắt buộc để cho phép sử dụng khoá truy cập được tạo trên một nền tảng trên nền tảng khác.
Kết quả? Người dùng có thể đăng nhập liền mạch trên các nền tảng liên kết của bạn bằng mật khẩu hoặc khoá truy cập đã lưu cho một trong các nền tảng đó.

Việc triển khai tính năng chia sẻ thông tin đăng nhập liền mạch có thể cải thiện đáng kể trải nghiệm người dùng. Ví dụ: eBay nhận thấy tỷ lệ đăng nhập thành công tăng 10% sau khi triển khai DAL để chia sẻ thông tin đăng nhập.
Trong lớp học lập trình này, bạn sẽ tìm hiểu cách sử dụng Digital Asset Links để bật tính năng chia sẻ thông tin đăng nhập giữa trang web và ứng dụng Android.
Điều kiện tiên quyết
- Có kiến thức cơ bản về JSON và phát triển Android.
- Quen thuộc với các điều kiện tiên quyết của Trình quản lý thông tin xác thực Android.
Kiến thức bạn sẽ học được
- Cách thiết lập tính năng chia sẻ thông tin đăng nhập bằng Google Play Console (Nên dùng).
- Cách tạo tệp
assetlinks.jsontheo cách thủ công. - Cách định cấu hình ứng dụng Android để liên kết theo cách thủ công.
- Cách bật khoá truy cập trên một ứng dụng Android bằng cách liên kết ứng dụng đó với một miền trang web.
- Cách sử dụng các công cụ để tạo và xác thực chế độ thiết lập.
Bạn cần có
- Một trang web: Có thể lưu trữ một tệp JSON tại
https://{your-domain}/.well-known/assetlinks.json. - Ứng dụng Android:
- Đối với phương thức Play Console: Một ứng dụng được xuất bản trên Google Play.
- Đối với phương thức thủ công: Một dự án Android mà bạn có thể sửa đổi và tạo. Xin lưu ý rằng để tính năng chia sẻ thông tin đăng nhập với Trình quản lý mật khẩu của Google hoạt động, ứng dụng phải được xuất bản trên Google Play.
Cách hoạt động
Để tính năng chia sẻ thông tin đăng nhập hoạt động, bạn cần thiết lập mối quan hệ tin cậy hai chiều:
- Web -> App: Trang web của bạn phải lưu trữ một tệp
assetlinks.jsonkhai báo rằng trang web đó tin tưởng ứng dụng Android của bạn. - Ứng dụng -> Web: Bạn phải định cấu hình ứng dụng Android để tin tưởng trang web của mình.
Chúng ta sẽ xem xét 2 cách để thực hiện việc này: cách tự động bằng Google Play Console (nên dùng) và cách thủ công bằng cách sử dụng trực tiếp Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số).
2. Thiết lập bằng Google Play Console (Nên dùng)
Cách dễ nhất để bật tính năng chia sẻ thông tin đăng nhập giữa trang web và ứng dụng Android của bạn là thông qua Google Play Console. Phương thức này cho phép bạn liên kết ứng dụng với trang web mà không cần sửa đổi tệp kê khai của ứng dụng hoặc xuất bản một phiên bản mới của ứng dụng. Google Play sẽ quản lý mối liên kết phía ứng dụng cho bạn.
Điều kiện tiên quyết
- Các quyền trong Play Console để truy cập vào trang Đường liên kết sâu.
- Có thể xuất bản tệp
/.well-known/assetlinks.jsontrên miền của bạn.
Để biết thêm thông tin về đường liên kết sâu, hãy xem bài viết Đường liên kết trong ứng dụng Android.
Các bước
- Trong Play Console, hãy chuyển đến phần Phát triển > Đường liên kết sâu.
- Nếu miền của bạn không có trong danh sách, hãy nhấp vào Thêm miền trong phần Cấu hình ứng dụng.
- Tìm miền của bạn và xác định vị trí cột Chia sẻ thông tin đăng nhập. Nhấp vào Bật (hoặc đảm bảo bạn đã bật nút Bật tính năng chia sẻ thông tin đăng nhập cho các miền mới).
- Sao chép đoạn mã JSON do Play Console tạo.
- Xuất bản nội dung JSON này vào
https://{your-domain}/.well-known/assetlinks.json. (Nếu bạn đã có tệp này, hãy thêm nội dung khai báo mới vào tệp). - Quay lại Play Console, hãy nhấp vào Tạo mối liên kết với trang web hoặc Bật tính năng chia sẻ thông tin đăng nhập.
Play Console sẽ xác minh chế độ thiết lập lưu trữ của bạn.

Để tính năng chia sẻ thông tin đăng nhập hoạt động, máy chủ lưu trữ trang web của bạn phải đáp ứng các yêu cầu sau:
- URL có thể truy cập qua HTTPS.
- Máy chủ phản hồi bằng
Content-Type: application/json. - URL có thể truy cập được mà không cần chuyển hướng.
Sau khi xác minh, tính năng chia sẻ thông tin đăng nhập sẽ hoạt động! Có thể mất từ 1 đến 2 tuần để các thay đổi về cấu hình có hiệu lực.
3. Thiết lập theo cách thủ công bằng Digital Asset Links
Bạn cần kiểm soát nhiều hơn? Hoặc bạn không có quyền truy cập vào Play Console? Bạn có thể định cấu hình tính năng chia sẻ thông tin đăng nhập giữa trang web và ứng dụng Android theo cách thủ công. Việc này bao gồm 2 việc chính: lưu trữ tệp JSON trên trang web của bạn và cập nhật tệp kê khai ứng dụng Android.
1. Lấy dấu vân tay kỹ thuật số của ứng dụng
Trước khi thiết lập tính năng chia sẻ thông tin đăng nhập liền mạch, hãy đảm bảo bạn có những thông tin sau cho từng nền tảng:
Đối với mỗi ứng dụng Android:
- Mã ứng dụng Android, như được khai báo trong tệp
build.gradlecủa ứng dụng. - Dấu vân tay SHA256 của chứng chỉ ký.
- (Nên dùng) Tính năng đăng nhập của người dùng được triển khai bằng API Trình quản lý thông tin xác thực.
2. Tạo tệp liên kết
Bạn cần tạo một tệp assetlinks.json khai báo mối quan hệ giữa trang web và ứng dụng của bạn. Hãy sử dụng delegate_permission/common.get_login_creds để cấp quyền chia sẻ mật khẩu và delegate_permission/common.handle_all_urls để bật tính năng liên kết sâu và chia sẻ khoá truy cập.
Tạo một tệp có tên là assetlinks.json với nội dung sau. Thay thế các giá trị ví dụ bằng URL trang web, tên gói và dấu vân tay của riêng bạn:
[{
"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"]
}
}]
3. Lưu trữ tệp
Tải tệp assetlinks.json lên thư mục .well-known ở gốc miền của bạn.
Vị trí: https://{your-domain}/.well-known/assetlinks.json
Để tính năng chia sẻ thông tin đăng nhập hoạt động, máy chủ lưu trữ trang web của bạn phải đáp ứng các yêu cầu sau:
- URL có thể truy cập qua HTTPS.
- Máy chủ phản hồi bằng
Content-Type: application/json. - URL có thể truy cập được mà không cần chuyển hướng.

4. Định cấu hình ứng dụng Android
Bây giờ, hãy yêu cầu ứng dụng Android của bạn tin tưởng trang web đó. Bạn sẽ thêm một tham chiếu trong tệp kê khai trỏ đến một tệp tài nguyên chứa URL assetlinks.json của bạn.
1. Thêm tài nguyên chuỗi
Trong res/values/strings.xml, hãy thêm một chuỗi mới asset_statements. Lưu ý dấu ngoặc kép được thoát!
<resources>
<string name="asset_statements" translatable="false">
[{
\"include\": \"https://www.example.com/.well-known/assetlinks.json\"
}]
</string>
</resources>
2. Thêm siêu dữ liệu vào tệp kê khai
Trong AndroidManifest.xml, hãy thêm thẻ <meta-data> vào phần tử <application> tham chiếu đến tài nguyên chuỗi này:
<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>
Sau khi hoàn thành các bước này và xuất bản một phiên bản mới của ứng dụng Android, trình quản lý mật khẩu hỗ trợ Digital Asset Links (chẳng hạn như Trình quản lý mật khẩu của Google) sẽ có thể đề xuất thông tin đăng nhập đã lưu cho www.example.com khi người dùng cố gắng đăng nhập vào com.example.app và ngược lại.
4. Xác minh thiết lập của bạn
Trước khi phát hành, bạn cần xác minh cấu hình Digital Asset Links. JSON không chính xác hoặc các tệp không truy cập được sẽ âm thầm thất bại.
Sử dụng công cụ chính thức Trình tạo và xác thực tuyên bố.

- Nhập miền trang web và tên gói ứng dụng.
- Nhấp vào Test Statement (Câu lệnh kiểm thử).
- Công cụ này sẽ kiểm tra xem tệp
assetlinks.jsoncó được lưu trữ đúng cách và có mối liên kết hợp lệ hay không.
5. Chia sẻ thông tin đăng nhập giữa nhiều trang web

Nếu có nhiều trang web dùng chung một hệ thống đăng nhập (ví dụ: example.com và example.co.uk), bạn có thể khai báo các trang web đó là trang web liên kết để có thể chia sẻ thông tin đăng nhập giữa các trang web.
Chia sẻ mật khẩu giữa nhiều trang web
Để chia sẻ mật khẩu giữa các trang web, bạn có thể khai báo mối liên kết web với web bằng cách sử dụng delegate_permission/common.get_login_creds.
Ví dụ: để example.com chia sẻ mật khẩu với example.co.uk, tệp assetlinks.json được lưu trữ trên https://example.com/.well-known/assetlinks.json phải có một câu lệnh nhắm đến example.co.uk:
[{
"relation": ["delegate_permission/common.get_login_creds"],
"target": {
"namespace": "web",
"site": "https://example.co.uk"
}
}]
Tương tự, https://example.co.uk/.well-known/assetlinks.json phải có một câu lệnh nhắm đến example.com.
Chia sẻ khoá truy cập giữa nhiều trang web
Để cho phép nhiều trang web chia sẻ cùng một khoá truy cập, các trang web đó phải sử dụng cùng một Mã nhận dạng bên đáng tin cậy (RP ID). Trong WebAuthn và khoá truy cập, mã nhận dạng RP chỉ định phạm vi của thông tin đăng nhập theo tên miền. Khi bạn tạo khoá truy cập, khoá này sẽ được liên kết với một RP ID cụ thể và chỉ có thể được dùng trên những miền thuộc phạm vi của RP ID đó. Việc xác định RP ID một cách chính xác sẽ đảm bảo trải nghiệm liền mạch với khoá truy cập trên các miền phụ, nguồn gốc trên nhiều trang web và ứng dụng di động của bên thứ nhất. Bạn có thể tìm hiểu thêm về cách đặt mã nhận dạng RP trong phần Tìm hiểu về mã nhận dạng Bên tin cậy (RP ID). Với Yêu cầu về nguồn gốc có liên quan, một trang web có thể chỉ định những nguồn gốc khác được phép sử dụng RP ID của trang web đó, cho phép người dùng sử dụng lại cùng một khoá truy cập trên nhiều trang web mà bạn vận hành. Xin lưu ý rằng việc này khác với việc chia sẻ khoá truy cập giữa một trang web và một ứng dụng Android. Việc này sử dụng delegate_permission/common.handle_all_urls trong Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số).
Ví dụ: nếu muốn example.com và example.co.uk dùng chung khoá truy cập, bạn có thể quyết định rằng example.com sẽ là mã nhận dạng RP chính tắc. Để hoạt động này diễn ra, example.co.uk phải sử dụng rpId: 'example.com' trong các lệnh gọi API WebAuthn và example.com phải lưu trữ một tệp tại https://example.com/.well-known/webauthn để đưa example.co.uk vào danh sách cho phép:
{
"origins": [
"https://example.co.uk"
]
}
Điều này cho phép example.co.uk tạo và sử dụng khoá truy cập được liên kết với example.com.
6. Kết luận
Xin chúc mừng! Bạn đã thiết lập thành công tính năng chia sẻ thông tin đăng nhập liền mạch.
Giờ đây, người dùng có thể lưu mật khẩu và khoá truy cập trên trang web của bạn, rồi dùng mật khẩu và khoá truy cập đó để đăng nhập vào ứng dụng Android của bạn chỉ bằng một lần nhấn (và ngược lại). Thay đổi đơn giản này có thể giúp tăng đáng kể tỷ lệ chuyển đổi khi đăng nhập và mức độ hài lòng của người dùng.
Tiếp theo là gì?
- Hãy xem Tài liệu chính thức về Digital Asset Links.
- Tìm hiểu thêm về Nguyên tắc cơ bản về việc chia sẻ thông tin đăng nhập.
- Đọc Nghiên cứu điển hình về eBay để xem mức tác động.