讓應用程式和網站在跨平台上無縫共用憑證,盡可能提升使用者便利性。當多個網站和 Android 應用程式共用帳戶管理後端時,這項功能可讓使用者只需儲存一次憑證,系統就會自動在任何已連結的網站或 Android 應用程式中提供建議。
最佳做法
為提供最佳使用者體驗和安全性,請在下列接觸點實作無縫的憑證共用功能:
- 登入表單:啟用自動填入憑證功能。
- 註冊表單:安全儲存新的憑證,以便跨平台使用。
- 密碼變更表單:同步處理所有平台的密碼更新。
- 密碼重設表單:允許單一密碼重設作業更新所有平台。
- 網頁畫面網域:將憑證共用權擴展至應用程式中負責處理帳戶管理 (代管登入、註冊、密碼變更或重設密碼表單) 的網頁畫面網域。
- Android 應用程式
這種方法會建立統一的憑證管理系統,提升使用者的便利性和安全性。
設計帳戶管理網站時,建議您遵循下列帳戶管理網站最佳做法:
設計 Android 應用程式時,建議您將應用程式與 Android Credential Manager 整合。
必要條件
設定無縫憑證共用功能前,請確認您已為每個平台完成下列事項:
針對每個 Android 應用程式:
- 應用程式
build.gradle
檔案中宣告的 Android 應用程式 ID。 - 簽署憑證的 SHA256 指紋。
- (建議) 使用 Credential Manager API 實作的使用者登入功能。
針對每個網站:
- 能夠按照 Digital Asset Links (DAL) 語法,在個別網域發布
/.well-known/assetlinks.json
檔案。 - 所有帳戶管理網域 (登入、註冊、變更密碼或重設密碼表單) 都必須透過 HTTPS 存取。
在 Android 應用程式和網站之間順暢共用憑證
如要設定跨應用程式和網站順暢的憑證共用,請建立並發布 Digital Asset Links 陳述式清單,以宣告哪些實體 (網站或 Android 應用程式) 可以共用憑證。
如何宣告憑證共用關係:
按照 DALs 陳述式清單語法建立
assetlinks.json
檔案,其中包含連結至網站和 Android 應用程式的陳述式:[ { "relation":[ "delegate_permission/common.get_login_creds" ], "target":{ "namespace":"web", "site":URL } }, { "relation":[ "delegate_permission/common.get_login_creds" ], "target":{ "namespace":"android_app", "package_name":"APP_ID", "sha256_cert_fingerprints":[ "SHA_HEX_VALUE" ] } } ]
其中
URL
是您的網站網址,APP_ID
是您的 Android 應用程式 ID,SHA_HEX_VALUE
則是 Android 應用程式簽署憑證的 SHA256 指紋。relation
欄位會說明要宣告的關係。如要宣告應用程式和網站會共用登入憑證,請將關係指定為delegate_permission/common.get_login_creds
。進一步瞭解 DAL 中的關聯字串。target
欄位是一種物件,用於指定宣告所適用的資產。下列欄位可用來識別網站:
namespace
web
site
網站網址,格式為
https://domain[:optional_port
],例如 https://www.example.com。domain
必須完整,且使用 HTTPS 的通訊埠 443 時必須省略optional_port
。site
指定目標只能是根網域:您無法限制應用程式與特定子目錄建立關聯。請勿在網址中加入路徑,例如結尾的斜線。系統不會將子網域視為相符項目:也就是說,如果將
domain
指定為 www.example.com,網域 www.counter.example.com 就不會與您的應用程式建立關聯。下列欄位可用來識別 Android 應用程式:
命名空間
android_app
package_name
應用程式資訊清單中宣告的套件名稱。例如:com.example.android
sha256_cert_fingerprints
應用程式簽署憑證的 SHA256 指紋。
請在登入網域的以下位置代管 Digital Asset Links JSON 檔案:
https://DOMAIN[:OPTIONAL_PORT]/.well-known/assetlinks.json
,其中DOMAIN
為完整限定,且使用 HTTPS 的通訊埠 443 時必須省略OPTIONAL_PORT
。在 Android 應用程式的
res/values/strings.xml
檔案中嵌入陳述式,連結至您在步驟 1 建立的陳述式清單,藉此在 Android 應用程式中宣告關聯。新增物件,用於指定要載入的assetlinks.json
檔案。例如:<string name="asset_statements" translatable="false"> [{ \"include\": \"https://DOMAIN[:OPTIONAL_PORT]/.well-known/assetlinks.json\" }] </string>
請替換
DOMAIN
和OPTIONAL_PORT
(使用 HTTPS 的通訊埠 443 時必須省略),例如https://www.example.com
。逸出您在字串中使用的所有格號和引號。您也可以在
strings.xml
檔案中新增 JSON 程式碼片段,如DAL 說明文件所示,但使用include
陳述式可讓您變更陳述式,不必發布新版應用程式。如要參照資訊清單中的陳述式,請在
<application>
下方應用程式的AndroidManifest.xml
檔案中新增下列程式碼行:<meta-data android:name="asset_statements" android:resource="@string/asset_statements"/>
將新版 Android 應用程式發布至 Google Play 開發人員管理中心
完成這些步驟後,您就已成功設定網站和 Android 應用程式之間的無縫憑證共用功能。
請注意,這並非設定 DAL 以便分享憑證的唯一有效方法,但這種做法可簡化日後將新實體新增至無縫憑證分享網路的程序,提升程式碼可重複使用性,並減少更新期間發生錯誤的可能性。