在 Android 应用和网站之间设置无缝凭据共享

通过实现跨平台无缝凭据共享,最大限度地为用户提供便利 您的应用和网站当多个网站和 Android 应用共享一个 账号管理后端,此功能允许用户保存一次凭据 并让系统在任何关联的网站或 Android 应用中自动推荐这些内容。

最佳做法

为实现最佳用户体验和安全性,请实现无缝凭据共享 :

  • 登录表单:启用自动凭据填充功能。
  • 注册表单:安全地存储用于跨平台使用的新凭据。
  • 密码更改表单:在所有平台上同步密码更新。
  • 密码重置表单:允许重置一次密码以更新所有平台。
  • 网页视图网域:将凭据共享扩展到以下网页视图网域 您负责处理账号管理(主机登录、注册、密码)的应用 更改或密码重置表单)。
  • 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 是完全限定的,以及 OPTIONAL_PORT 为 HTTPS。

  3. 通过在 Android 应用中嵌入一个声明, Android 应用的 res/values/strings.xml 文件,其中链接到您的声明列表 第 1 步中创建的代码添加一个对象,用于指定 assetlinks.json 文件, 加载。例如:

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

    DOMAINOPTIONAL_PORT(使用端口时必须省略 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. 向 Google Play 开发者发布新版 Android 应用 控制台

完成以下步骤后,您已成功设置无缝凭据 在网站和 Android 应用之间共享数据。

请注意,这不是设置用于凭据共享的 DAL 的唯一有效方法, 但这种方法可以简化将新实体添加到 可提高代码可重用性, 更新过程中出错的可能性