注册和配置设备

配置是指设置设备以供enterprise使用 policies 进行管理的过程。在此过程中,设备会安装 Android Device Policy,用于接收和强制执行 policies。如果配置成功,API 会创建一个 devices 对象,将设备绑定到企业。

Android Management API 使用注册令牌来触发配置流程。您使用的注册令牌和配置方法决定了设备的所有权(个人所有或公司所有)和管理模式(工作资料或全托管式设备)。

配额系统控制着每个项目可以管理的设备数量。您必须先请求初始设备配额,然后才能预配第一台设备。

个人所有的设备

Android 5.1 及更高版本

员工拥有的设备可以设置工作资料。工作资料为工作应用和数据提供了一个独立空间,与个人应用和数据分开。大多数应用、数据和其他管理policies仅适用于工作资料,而员工的个人应用和数据仍会保持私密性。

如需在个人自带设备上设置工作资料,请创建注册令牌(确保 allowPersonalUsage 设置为 PERSONAL_USAGE_ALLOWED),并使用以下配置方法之一:

公司自有设备,用于工作和个人用途

Android 8+

为公司自有设备设置工作资料后,该设备既可用于工作,也可用于个人用途。在设有工作资料的公司自有设备上:

  • 大多数应用、数据和其他管理policies仅适用于工作资料。
  • 员工的个人资料会保持私密状态。不过,企业可以强制执行某些设备级政策和个人使用政策。
  • 企业可以使用 blockScope 对整个设备或仅对其工作资料强制执行合规性操作。
  • devices.delete 和设备命令适用于整个设备。

如需设置具有工作资料的公司自有设备,请创建注册令牌(确保将 allowPersonalUsage 设置为 PERSONAL_USAGE_ALLOWED),并使用以下配置方法之一:

仅限工作用途的公司自有设备

Android 5.1 及更高版本

完整设备管理适用于仅用于工作目的的公司自有设备。企业可以管理设备上的所有应用,并可以强制执行 Android Management API 的所有政策和命令。

您还可以(通过政策)将设备锁定为仅运行单个应用或一小组应用,以实现专用目的或用例。这类完全受管设备称为专用设备。这些设备的注册令牌必须将 allowPersonalUsage 设置为 PERSONAL_USAGE_DISALLOWED_USERLESS。

如需在公司自有设备上设置完整管理,请创建注册令牌,确保将 allowPersonalUsage 设置为 PERSONAL_USAGE_DISALLOWED 或 PERSONAL_USAGE_DISALLOWED_USERLESS,然后使用以下某种配置方法。

政策可能会影响设备配置期间界面的生成。这些政策包括:

如果您希望在设备配置期间,密码步骤与工作应用安装和设备注册卡片一起显示,我们建议您更新政策,通过将设备保持在隔离状态(如果注册时没有关联的政策,就会发生这种情况)来延迟界面生成的启动,直到为设备设置指定最终选择的政策,并填充与您的设置需求相关的项目。设备配置完成后,您可以根据需要更改政策。


创建注册令牌

Android 管理概览。
图 1. 创建一个令牌,用于注册设备并向设备应用“policy1”。1800 秒(30 分钟)后,令牌过期。

您需要为要注册的每台设备获取一个注册令牌(您可以对多台设备使用同一令牌)。如需请求注册令牌,请调用 enterprises.enrollmentTokens.create。默认情况下,注册令牌会在一小时后过期,但您可以指定自定义过期时间 (duration),最长可达大约 10,000 年。

如果请求成功,则会返回一个 enrollmentToken 对象,其中包含 IT 管理员和最终用户可用于预配设备的 enrollmentTokenId 和 qrcode。

指定政策

您可能还需要在请求中指定 policyName,以便在注册设备的同时应用政策。如果您未指定 policyName,请参阅注册没有政策的设备。

指定个人用途

allowPersonalUsage 决定了是否可以在配置期间向设备添加工作资料。设置为 PERSONAL_USAGE_ALLOWED,以允许用户创建工作资料(个人设备必须设置,公司自有设备可选择设置)。

现有注册令牌的豁免

有些客户会使用失效日期较长的注册令牌来执行重复注册。为确保这些现有工作流不会中断,在首次启用“使用 Google 账号进行身份验证”要求之前创建的所有令牌均不受新登录提示的影响。这些旧令牌将继续像以前一样运行,允许用户在不经过 Google 身份验证流程的情况下注册设备。

不过,在首次启用 Google 身份验证要求之后创建的所有令牌都遵循新的身份验证规则。这意味着,使用这些较新令牌的设备需要用户根据 IT 管理员选择的设置进行身份验证。对于不应存储用户数据的专用设备,请确保将 allowPersonalUsage 设置为 PERSONAL_USAGE_DISALLOWED_USERLESS,以避免显示身份验证界面。

在注册时强制执行 Google 身份验证

EMM 可以通过在注册令牌或登录令牌上设置适当的值,在设备注册期间强制执行 Google 账号登录。此配置决定了是否在 Google 登录屏幕上隐藏“跳过”按钮。 设置后,这些选项会覆盖企业范围内的 googleAuthenticationSettings 政策。

配置选项

您可以使用 EnrollmentToken 或 SigninDetail 中的 googleAuthenticationOptions 对象来控制身份验证行为。

字段 说明 值
authenticationRequirement 指定用户在注册期间是否必须通过 Google 进行身份验证。 AUTHENTICATION_REQUIREMENT_UNSPECIFIED:回退到企业默认设置。
可选:用户会看到 Google 登录界面,但可以选择跳过。
REQUIRED:用户无法跳过登录。“跳过”按钮处于隐藏状态。
requiredAccountEmail 用户必须使用的特定受管理 Google 账号电子邮件地址。
注意:如果使用此字段,则 authenticationRequirement 必须设置为 REQUIRED。
字符串(例如,“user@enterprise.com”)

JSON 载荷示例

停用“跳过”按钮

如需隐藏“跳过”按钮并强制用户使用任何有效的企业账号登录,请将身份验证要求设置为 REQUIRED。

{
  ...
  "googleAuthenticationOptions": {
    "authenticationRequirement": "REQUIRED"
  }
}

要求使用特定账号邮箱

如需强制用户使用指定账号登录,请定义 requiredAccountEmail 字符串。如果未将要求字段设置为 REQUIRED,令牌创建请求将失败,并返回 INVALID_ARGUMENT 错误。

{
...
  "googleAuthenticationOptions": {
    "authenticationRequirement": "REQUIRED",
    "requiredAccountEmail": "user@enterprise.com"
  }
}

关于二维码

对于维护许多不同政策的企业,二维码是一种高效的设备配置方法。从 enterprises.enrollmentTokens.create 返回的二维码由键值对载荷组成,其中包含注册令牌以及 Android 设备政策配置设备所需的所有信息。

示例二维码软件包

该软件包包含 Android 设备政策的下载位置和注册令牌。

{
    "android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME": "com.google.android.apps.work.clouddpc/.receivers.CloudDeviceAdminReceiver",
    "android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM": "I5YvS0O5hXY46mb01BlRjq4oJJGs2kuUcHvVkAPEXlg",
    "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION": "https://play.google.com/managed/downloadManagingApp?identifier=setup",
    "android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE":{
        "com.google.android.apps.work.clouddpc.EXTRA_ENROLLMENT_TOKEN": "{enrollment-token}"
    }
}

您可以直接使用从 enterprises.enrollmentTokens.create 返回的二维码,也可以对其进行自定义。如需查看可包含在二维码软件包中的属性的完整列表,请参阅创建二维码。

如需将 qrcode 字符串转换为可扫描的二维码,请使用二维码生成器,例如 ZXing。


配置方法

本部分介绍了配置设备的不同方法。

从“设置”中添加工作资料

Android 5.1 及更高版本

如需在设备上设置工作资料,用户可以:

  1. 依次前往设置 > Google > 设置和恢复。
  2. 点按设置工作资料。

这些步骤会启动设置向导,该向导会在设备上下载 Android Device Policy。接下来,系统会提示用户扫描二维码或手动输入注册令牌,以完成工作资料设置。

下载 Android 设备政策

Android 5.1 及更高版本

如需在设备上设置工作资料,用户可以从 Google Play 商店下载 Android Device Policy。安装应用后,系统会提示用户扫描二维码或手动输入注册令牌,以完成工作资料设置。

Android 5.1 及更高版本

使用从 enrollmentTokens.create 返回的注册令牌或企业的 signinEnrollmentToken,生成采用以下格式的网址:

https://enterprise.google.com/android/enroll?et=<enrollmentToken>

您可以将此网址提供给 IT 管理员,IT 管理员可以将其提供给最终用户。 最终用户在设备上打开该链接后,系统会引导其完成工作资料设置。

登录网址

使用此方法时,系统会引导用户前往一个页面,以便输入完成配置所需的任何其他信息。根据用户输入的信息,您可以在继续进行设备配置之前为用户计算适当的政策。例如:

  1. 在 enterprises.signInDetails[] 中指定您的登录网址。如果您想允许用户创建工作资料,请将 allowPersonalUsage 设置为 PERSONAL_USAGE_ALLOWED(对于个人拥有的设备,此设置是必需的;对于公司拥有的设备,此设置是可选的)。

    将生成的 signinEnrollmentToken 作为配置 extra 添加到二维码、NFC 载荷或零触摸配置中。或者,您也可以直接向用户提供 signinEnrollmentToken。

  2. 选择一个选项:

    1. 公司自有设备:开启新设备或恢复出厂设置的设备后,将 signinEnrollmentToken 传递给设备(通过二维码、NFC 碰撞等方式),或要求用户手动输入令牌。设备将打开第 1 步中指定的登录网址。
    2. 个人设备:让用户从“设置”中添加工作资料。出现提示时,用户扫描包含 signinEnrollmentToken 的二维码或手动输入令牌。设备将打开第 1 步中指定的登录网址。
    3. 个人设备:向用户提供注册令牌链接,其中注册令牌为 signinEnrollmentToken。设备将打开第 1 步中指定的登录网址。
  3. 检查 Google 是否已对用户进行身份验证。使用 GET 参数 provisioningInfo 获取设备配置信息(在设备注册期间),并检查 authenticatedUserEmail 字段的值。如果此字段中有值,则表示用户已成功通过 Google 身份验证,您无需进一步验证即可使用此身份。

  4. 如果 Google 尚未对用户进行身份验证,则您的登录网址应提示用户输入其凭据。根据其身份,您可以确定适当的政策,并使用 GET 参数 provisioningInfo 获取设备配置信息(在设备注册期间)。

  5. 调用 enrollmentTokens.create,并根据用户的凭据指定适当的 policyId。

  6. 使用网址重定向返回在第 5 步中生成的注册令牌,格式为 https://enterprise.google.com/android/enroll?et=<token>。

通过登录网址流程强制执行 Google 身份验证

如果您将 SigninDetail 用于第三方登录流程(通过 enterprises.create 或 enterprises.patch),则可以传递 googleAuthenticationOptions。这会在用户被重定向到第三方登录网址之前强制执行规则。

在登录网址流程结束时创建 EnrollmentToken 时,其身份验证要求会与初始 SigninDetail 交互:

  • 如果用户跳过了 Google 登录,因为 SigninDetail 不需要登录,但生成的 EnrollmentToken 的要求设置为 REQUIRED,则用户会看到错误,并且需要登录。
  • 如果令牌上设置了 requiredAccountEmail,并且用户使用属于企业的其他地址登录,则会收到“账号错误”错误,并且需要使用正确的必需电子邮件地址重新登录。

二维码方法

Android 7.0 及更高版本

如需配置公司自有设备,您可以生成二维码并在 EMM 控制台中显示该二维码:

  1. 在全新或已恢复出厂设置的设备上,用户(通常是 IT 管理员)在屏幕上的同一位置点按 6 次。这会触发设备提示用户扫描二维码。
  2. 用户扫描您在管理控制台(或类似应用)中显示的二维码,以注册和配置设备。

NFC 方法

Android 6.0 及更高版本

此方法要求您创建一个 NFC 编程器应用,其中包含注册令牌、初始政策和 Wi-Fi 配置、设置以及客户配置全托管式设备或专用设备所需的所有其他配置详细信息。当您或您的客户在搭载 Android 的设备上安装 NFC 编程器应用后,该设备就会成为编程器设备。

如需详细了解如何支持 NFC 方法,请参阅 Play EMM API 开发者文档。该网站还包含在 NFC 触碰时推送到设备的默认参数的示例代码。如需安装 Android Device Policy,请将设备管理软件包的下载位置设置为:

https://play.google.com/managed/downloadManagingApp?identifier=setup

DPC 标识符方法

如果无法使用二维码或 NFC 添加 Android 设备政策,用户或 IT 管理员可以按照以下步骤配置公司自有设备:

  1. 在新设备或恢复出厂设置的设备上,按照设置向导的提示操作。
  2. 输入 Wi-Fi 登录详细信息,将设备连接到网络。
  3. 当系统提示登录时,输入 afw#setup,这会下载 Android 设备政策。
  4. 扫描二维码或手动输入注册令牌以配置设备。

零触摸注册

Android 8.0 及更高版本(Pixel 7.1 及更高版本)

从授权的零触摸注册转销商处购买的设备符合零触摸注册条件,这是一种简化的方法,可预先配置设备,使其在首次启动时自动进行配置。

组织可以通过零触摸注册门户或使用 EMM 控制台(请参阅零触摸客户 API)创建包含其零触摸设备配置详细信息的配置。首次启动时,零触摸设备会检查是否已为其分配配置。如果是,设备会下载 Android Device Policy,然后使用其分配的配置中指定的配置 extra 完成设备设置。

如果您的客户使用零触摸注册门户,则需要为他们创建的每个配置选择 Android Device Policy 作为 EMM DPC。如需详细了解如何使用该门户,包括如何创建配置并将其分配给设备,请访问 Android Enterprise 帮助中心。

如果您希望客户直接从您的 EMM 控制台设置和分配配置,则需要与零触摸客户 API 集成。创建配置时,您需要在 dpcExtras 字段中指定配置 extra。以下 JSON 代码段展示了 dpcExtras 中应包含的内容的基本示例,其中添加了登录令牌。

{
   "android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME":"com.google.android.apps.work.clouddpc/.receivers.CloudDeviceAdminReceiver",
   "android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM":"I5YvS0O5hXY46mb01BlRjq4oJJGs2kuUcHvVkAPEXlg",
   "android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE":{
      "com.google.android.apps.work.clouddpc.EXTRA_ENROLLMENT_TOKEN":"{Sign In URL token}"
   }
}

在设置期间启动应用

setupaction
图 2.使用 setupActions 在设置期间启动应用。

在 policies 中,您可以指定一个应用,让 Android 设备政策 在设备或工作资料设置期间启动。例如,您可以启动 VPN 应用,以便用户在设置过程中配置 VPN 设置。应用必须返回 RESULT_OK 以指示完成,并允许 Android 设备政策 完成设备或工作资料配置。如需在设置期间启动应用,请执行以下操作:

确保应用的 installType 为 REQUIRED_FOR_SETUP。如果无法在设备上安装或启动该应用,配置将会失败。

{
   "applications":[
      {
         "packageName":"com.my.vpnapp.",
         "installType":"REQUIRED_FOR_SETUP"
      }
   ]
}

将应用的软件包名称添加到 setupActions。使用 title 和 description 指定面向用户的说明。

{
   "setupActions":[
      {
         "title":{
            "defaultMessage":"Configure VPN"
         },
         "description":{
            "defaultMessage":"Enable your VPN client to access corporate resources."
         },
         "launchApp":{
            "packageName":"com.my.vpnapp."
         }
      }
   ]
}

为了区分应用是否从 launchApp 启动,作为应用的一部分首先启动的 activity 包含布尔值 intent extra com.google.android.apps.work.clouddpc.EXTRA_LAUNCHED_AS_SETUP_ACTION(设置为 true)。借助此 extra,您可以根据应用是从 setupActions 启动还是由用户启动,自定义应用。

在应用返回 RESULT_OK 后,Android 设备政策会完成配置设备或工作资料所需的任何剩余步骤。

在设置期间取消注册

作为 SetupAction 启动的应用可以取消注册,并返回 RESULT_FIRST_USER。

取消注册会重置公司自有设备,或删除个人自有设备上的工作资料。

注意:取消注册会触发该操作,而不会显示用户确认对话框。应用负责在返回 RESULT_FIRST_USER 之前向用户显示相应的错误对话框。

将政策应用于新注册的设备

您可以使用哪种方法将政策应用于新注册的设备,取决于您和客户的要求。您可以使用以下几种不同的方法:

  • (推荐)创建注册令牌时,您可以指定最初将与设备关联的政策的名称 (policyName)。当您使用令牌注册设备时,系统会自动将政策应用于该设备。

  • 将某项政策设为企业的默认政策。如果注册令牌中未指定政策名称,并且存在名为 enterprises/<enterprise_id>/policies/default 的政策,则每个新设备在注册时都会自动关联到默认政策。

  • 订阅 Cloud Pub/Sub 主题,以接收有关新注册设备的通知。为了响应 ENROLLMENT 通知,请调用 enterprises.devices.patch 将设备与政策相关联。

在不应用政策的情况下注册设备

如果设备在注册时没有有效政策,则会被置于隔离状态。在设备关联到政策之前,系统会禁止隔离的设备使用所有设备功能。

如果设备在 5 分钟内未关联到政策,则设备注册会失败,并且设备会恢复出厂设置。隔离设备状态让您有机会在解决方案中实施许可检查或其他注册验证流程。

许可检查工作流示例

  1. 设备在注册时没有默认政策或特定政策。
  2. 查看企业剩余的许可数量。
  3. 如果有可用许可,请使用 devices.patch 将政策附加到设备,然后减少许可数量。如果没有可用的许可,请使用 devices.patch 停用设备。或者,API 会在注册后 5 分钟内将未附加到政策的所有设备恢复出厂设置。