在 Android 應用程式和網站之間設定流暢的憑證共用

跨平台順暢共用憑證,盡可能提高使用者的便利性 你的網站和應用程式如果多個網站和 Android 應用程式共用同一個 使用者可以透過這項功能 儲存憑證一次 並在任何連結的網站或 Android 應用程式中自動提供建議。

最佳做法

為提供最佳使用者體驗和安全性,請實作順暢的憑證共用功能 跨這些接觸點:

  • 登入表單:啟用自動填寫憑證功能。
  • 申請表:安全地儲存新憑證,以便在各個平台上使用。
  • 密碼變更表單:在所有平台同步處理密碼更新。
  • 密碼重設表單:允許透過單一密碼重設密碼來更新所有平台。
  • WebView 網域:將憑證共用範圍延伸至以下網域的 webView 網域: 處理帳戶管理 (主機登入、註冊、密碼等) 的應用程式 變更或密碼重設表單)。
  • Android 應用程式

這個方法會建立統合式憑證管理系統,強化 便利性和安全性

設計帳戶管理網站時,建議您採取下列做法 帳戶管理網站的最佳做法:

在設計 Android 應用程式時,建議您將應用程式與 Android Credential Manager 整合

必要條件

設定無縫憑證共用功能前,請確認您具備下列項目: 每個平台

針對每個 Android 應用程式:

針對每個網站:

  • 可針對每個項目發布 /.well-known/assetlinks.json 檔案 網域,按照 Digital Asset Links (DAL) 語法操作即可。
  • 所有帳戶管理網域 (登入、註冊、密碼變更或密碼) 重設表單) 必須透過 HTTPS 存取。

在 Android 應用程式和網站之間順暢共用憑證

如要設定在各個應用程式和網站之間順暢共用憑證,請建立 並發布 Digital Asset Links 陳述式清單,以宣告哪些 實體 (網站或 Android 應用程式) 可以共用憑證。

如何宣告憑證共用關係:

  1. 建立 assetlinks.json 檔案,內含連至網站的陳述式,並 導入 Android 應用程式,請按照以下 DALs 陳述式清單語法操作:

    [
      {
        "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 應用程式 IDSHA_HEX_VALUE 是 您的 Android 應用程式簽署憑證

    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 指紋。

  2. 請在以下位置代管 Digital Asset Links JSON 檔案: 登入網域: https://DOMAIN[:OPTIONAL_PORT]/.well-known/assetlinks.json ,其中 DOMAIN 是完全合格的,以及 使用通訊埠 443 時,必須省略 OPTIONAL_PORT HTTPS

  3. 在 Android 應用程式中嵌入陳述式,以宣告關聯: 連結至陳述式清單的 Android 應用程式 res/values/strings.xml 檔案 新增物件,用於指定 assetlinks.json 檔案。 載入。例如:

      <string name="asset_statements" translatable="false">
    [{
      \"include\": \"https://DOMAIN[:OPTIONAL_PORT]/.well-known/assetlinks.json\"
    }]
    </string>
    

    DOMAINOPTIONAL_PORT (使用通訊埠時必須省略) HTTPS 為 443)。例如 https://www.example.com。避開所有格號 和半形引號。

    您也可以在 strings.xml 檔案中新增 JSON 程式碼片段,如下所示: DAL 說明文件,但使用 include 陳述式可讓您 在不發布新版應用程式的情況下變更陳述式。

  4. 將下列程式碼新增至 「<application>」底下的應用程式 AndroidManifest.xml 檔案:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements"/>
    
  5. 將新版 Android 應用程式發布至 Google Play 開發人員 控制台

完成上述步驟後,您已成功設定無縫憑證 可在網站和 Android 應用程式之間分享

請注意,若要設定 DAL 以進行憑證共用,這是設定 DAL 的唯一有效方式。 但這種做法可簡化日後在 順暢的憑證共用網路、促進程式碼重複使用, 更新期間可能發生的錯誤