配置用户帐号

身份配置(或账号配置)是指设置账号并在三个系统之间建立连接的过程,在某些情况下,还包括在用户与其设备之间建立连接。

在 Android 企业环境中,多达三种不同的系统会存储账号信息:

  • 组织的用户目录是用户信息的权威来源。
  • 您(EMM 解决方案提供商)必须至少维护组织用户的最低限度目录。
  • Google 会保留一些与 Google Play 企业版账号和 Google 账号相关的信息,以便通过 Google Play 提供应用管理服务。

Users 资源表示与企业关联的账号。该账号可以是特定于某部设备的,也可以与拥有多部设备(手机、平板电脑等)并在所有设备上使用该账号的个人相关联。该账号可以提供对受管 Google Play 的访问权限,也可以提供对其他 Google 服务的访问权限,具体取决于您如何设置客户的企业账号

  • Google Play 企业版账号可让企业通过其企业移动管理 (EMM) 解决方案提供商以透明的方式自动创建用户账号或设备账号。这些账号仅提供对 Google Play 企业版的访问权限。

  • Google 账号是指由 Google 管理的现有账号,需要与 Google 账号来源同步。

表 1:Users API 字段和方法

 Google Play 企业版账号Google 管理的账号
字段
id
kind
accountIdentifier您创建的唯一标识符,用于映射到 Google Play 返回的 ID (userId)。请勿使用个人身份信息 (PII)。未设置。
accountTypedeviceAccount、userAccountuserAccount
displayName您要在界面项(例如 Google Play 中)中显示的名称。请勿使用个人身份信息。未设置。
managementTypeemmManagedgoogleManaged、emmManaged
primaryEmail未设置。此字段是主键,您可以通过它管理从 Google 管理的网域账号到您系统中用户账号的同步。
方法
删除
generateAuthenticationToken
generateToken
get
getAvailableProductSet
insert
list
revokeToken
setAvailableProductSet
update

Google Play 企业版账号

Google Play 企业版账号有两种类型:

用户账号
让单个用户可通过其所有设备访问 Google Play 企业版。 您必须为用户配置用户账号,因为用户没有凭据来自行添加受管理的 Google Play 账号。
如需创建用户账号,请调用 Users.insert。将账号类型设置为 userType,并设置 accountIdentifier,以便在企业内以唯一方式引用用户。
最佳做法:请勿在超过 10 部设备上使用同一账号。
设备账户
可通过单个设备访问 Google Play 企业版。如果已为设备账号签发身份验证令牌,则为该设备账号发出新的身份验证令牌请求会使之前的令牌失效。每台设备都应拥有自己的应用许可。
如需创建设备账号,请调用 Users.insert 并将账号类型设置为 deviceType

您可以在用户或设备身份与相应的受管 Google Play 账号之间创建和维护映射,并在账号生命周期内管理这些账号。这些受管理的 Google Play 账号仅用于应用管理,因此组织无需对这些账号进行任何直接控制。

EMM 控制台和服务器的要求

系统会使用 Google Play EMM API 和 Android 框架 API 在 EMM 解决方案的各个组件(EMM 控制台、EMM 服务器和 DPC)中按需以编程方式创建 Play 企业版托管账号。这些组件会在运行时互动,以创建用户账号并在目标设备上预配工作资料

您的 EMM 控制台或服务器必须:

  • 提供一种机制来创建唯一的匿名账号标识符(accountIdentifier 字段),以便在调用 Users.insert 时使用。例如,您可以使用用户的某个内部值(“sanjeev237389”),也可以使用不易解读的资产标签编号(“asset#44448”)。避免将个人身份信息 (PII) 用作账号标识符。

  • 存储 userId(从 insert 调用返回)与您选择的 accountIdentifier 之间的映射。

如需了解 DPC 的要求,请参阅构建设备政策控制器

创建受管理的 Google Play 用户账号

  1. 用户使用公司凭据(通常)登录您的 DPC。
  2. DPC 会向 EMM 服务器或控制台请求用户的详细信息。假设您的系统不认识该用户:
    1. 通过调用 Users.insert 并提供新的 accountIdentifierdisplayNameaccountType 值,提交新的 Google Play 企业版账号请求。
      • 您的系统必须创建 accountIdentifier。账号标识符必须是系统中唯一的值。请勿将个人身份信息用作账号标识符。
      • displayName 显示在 Google Play 商店的账号切换器中,应对用户有一定意义(但不能是用户的个人身份信息)。例如,名称可以包含组织名称或与 EMM 相关的通用名称。
      • accountType 设置为 userAccountdeviceAccountuserAccount 可在多部设备上使用,而 deviceAccount 仅适用于单部设备。指定的 accountType 可以是 deviceTypeuserType
      • managementType 设置为 emmManaged
    2. Google Play 会处理请求、创建账号,然后返回 userId
    3. accountIdentifieruserId 之间的映射存储在数据存储区中。
    4. 使用 userIdenterpriseId 调用 Users.generateAuthenticationToken。Google Play 会返回一个可单次使用的身份验证令牌,且必须在几分钟内使用。
    5. 将身份验证令牌安全地转发给您的 DPC。
  3. DPC 会预配工作资料,并将账号添加到工作资料或设备。
  4. 用户可以在工作资料或设备中访问受管理的 Google Play。

管理员账号

当管理员创建包含受管 Google Play 账号的企业时,所使用的 Google 账号不能是 G Suite 账号。他们使用的账号会成为企业的所有者,所有者可以在 Google Play 企业版管理中心内添加更多所有者和管理员。

Enterprises.getEnterprises.completeSignup 都会返回与企业(仅限使用 Google Play 企业版账号的企业)关联的管理员电子邮件地址列表。

管理账号生命周期

在 Google Play 企业版账号部署中,您负责用户账号和设备账号生命周期,也就是说,您负责创建、更新和删除这些账号。

您可以在设备配置期间创建账号,该流程涉及 DPC 应用和 EMM 控制台。如需了解相关说明,请参阅受管理的 Google Play 账号方法

如需更改账号的信息,请调用 Users.update

如需删除账号,请调用 Users.delete

管理员无法删除个人账号,但可以删除使用 Google Play 企业版账号的企业。这样一来,与该企业关联的设备和用户账号最终会被删除,如取消注册、重新注册和删除中所述。

账号到期

账号或其令牌有时会过期,这可能有多种原因:

  • 用于将账号添加到设备的身份验证令牌已过期。
  • 账号或企业已被删除
  • 对于设备账号,该账号已添加到新设备,因此会在旧设备上停用。
  • 系统会触发自动滥用行为检查。
  • 如果设备离线超过 270 天,其信息可能会因批量清理流程而被删除。

在大多数情况下(除非 EMM 有意将设备账号移至新设备),最佳实践是使用 Play EMM API 向 EMM 服务器请求新的令牌,记下账号和企业的状态以及返回的任何错误,然后对设备采取适当的措施。例如,续订令牌;如果无法恢复错误,请重置或取消注册设备。

如需正确续订令牌,您应:

  1. 调用 users.generateAuthenticationToken 以请求为该账号获取新的身份验证令牌。
  2. 如果调用成功,请移除现有账号,然后使用 DPC 支持库添加新账号。
  3. 如果调用失败,请从设备中移除该账号,然后使用 users.insert 创建新用户、生成身份验证令牌,并将该账号添加到设备。

Google Play 服务版本 9.0.00 会使用广播操作通知您的 DPC 账号已过期:

  1. 当设备上的受管 Google Play 账号失效时,DPC 会收到一个包含以下操作的广播:

    com.google.android.gms.auth.ACCOUNT_REAUTH_REQUIRED

    广播 intent 包含一个名为 accountParcelable extra,它是失效账号的 Account 对象。

  2. DPC 会与 EMM 服务器检查 Account#name,以识别失效的账号。

  3. DPC 会请求新的凭据或新账号,遵循最初配置设备时所用的流程。


Google 账号

对于使用 Google 账号的组织,EMM 解决方案中的用户账号会镜像与其他 Google 服务(例如 G Suite)关联的现有用户账号。这些账号属于 googleManaged表 1),因为 Google 的后端服务是创建账号和账号信息的来源。

作为 EMM,您可以在控制台中提供机制,以便使用 Google Cloud Directory Sync (GCDS)Google Admin SDK Directory API 等工具,创建系统中存储的用户账号并将其与 Google 网域账号来源进行持续同步。Google 管理的网域身份模型要求用户账号必须存在于您的解决方案(EMM 控制台、EMM 服务器,可能还包括数据存储区)中,然后才能在用户的任何设备上的工作资料上下文中预配该账号。

在身份配置期间,系统会在贵组织的 Google 管理型网域中填充用户账号。在某些情况下,系统会将用户的现有在线身份(例如 Microsoft Exchange 账号)与其 Google 账号同步。

在初始同步完成后,但在应用分发到用户设备之前,用户必须激活其 Google 账号,如在设备上激活账号中所述。此激活可让设备访问 Google Play 企业版。

同步客户账号

在 Google 账号部署中,组织可以使用 GCDS 工具将其 G Suite 网域中的数据与 LDAP 目录中的数据同步。或者,如果组织向您授予访问权限,您也可以使用 GCDS 代表组织执行此操作。

GCDS 工具会调用 Google Directory API 并同步用户名,但不会同步密码。

如果贵组织使用 Microsoft Active Directory,并且希望将用户的 G Suite 密码与其 Active Directory 密码保持同步,则贵组织或您可以将 G Suite Password Sync (GSPS) 工具与 GCDS 搭配使用。

如需查看面向管理员的 GCDS 说明,请参阅为 G Suite 网域做好同步准备

Google Directory API

在 Google 账号部署中,您可以使用 Google Directory API 同步 Active Directory 和/或密码:

  • 使用 Directory API 进行仅目录同步。如果您对组织的受管 Google 网域拥有只读访问权限,则可以使用 Google Directory API 从 Google 获取 Google 账号信息,例如用户名(但不包括密码)。由于您无法向用户的 Google 账号写入任何数据,因此贵组织需对账号生命周期承担全部责任。

    场景 1基于 SAML 的 SSO 身份验证场景更详细地介绍了这种情况。

    如需了解如何以这种方式使用 Directory API,请参阅 Directory API 文档中的检索所有账号用户

  • 使用 Directory API 进行目录同步和可选的密码同步。如果您对组织的受管理 Google 网域拥有读写权限,则可以使用 Google Directory API 获取用户名、密码和其他 Google 账号信息。您可以更新这些信息并将其与您自己的数据库同步,并且您可能需要全权或部分负责账号生命周期,具体取决于您向客户提供的解决方案。

    场景 2 更详细地说明了这种情况。

    如需详细了解如何使用 Directory API 管理用户账号信息,请参阅 Directory API:用户账号开发者指南。

Google 账号场景

下面介绍了一些典型的 Google 账号身份配置场景。

场景 1:客户负责账号生命周期

使用 Directory API(具有只读访问权限)和 GCDS

在这种情况下,您的客户会为其用户创建和维护 Google 账号。

您从组织的 LDAP 目录中获取用户账号信息,并将其与您通过 Google Directory API 从 Google 获取的 Google 账号数据相关联。

组织对账号生命周期负有全部责任。例如,在创建新的 Google 账号时,组织会将用户添加到其 LDAP 目录中。当您下次将数据库同步到 LDAP 目录时,数据库会收到有关此新用户的信息。

在这种情况下:

  • 您对 Google 账号仅拥有只读权限。
  • 您的数据库会获取 Google 账号名称,但不会获取 LDAP 用户名或密码。
  • 您可以使用 Google Directory API 获取客户用户的基本账号信息。(您可以获取的信息是 Users.get 请求返回的不可写入信息)。您可以使用这些信息验证用户的 Google 账号是否存在,以便用户对其设备进行身份验证。
  • 您的客户使用 GCDS 工具进行单向同步,以填充用户的 Google 账号。(在身份预配完成后,组织可能还会使用 GCDS 进行自己的持续同步。)组织还可以选择使用 GSPS 工具,不仅同步用户名,还同步密码。

场景 2:EMM 负责账号生命周期

使用具有读写权限的 Directory API

在这种情况下,您代表客户处理创建 Google 账号的流程,并负责用户的账号生命周期。

例如,当组织的 LDAP 目录中的用户信息发生变化时,您负责更新用户的 Google 账号。在此场景中,不会使用 GCDS。

在这种情况下:

  • 您对 Google 账号拥有读写权限。
  • 您的数据库会获取 Google 账号名称和 LDAP 用户名(以及可选的密码哈希)。
  • 您代表客户使用 Google Directory API 读取和写入组织用户的账号信息。(可供您使用的是在 Users.get 请求中返回的不可写入信息)。您可以使用这些信息验证用户的 Google 账号是否存在,以便用户对其设备进行身份验证。
  • 不使用 GCDS 工具。

基于 SAML 的单点登录身份验证场景

在 Google 账号部署中,您或您的客户可以将安全断言标记语言 (SAML) 与身份提供方 (IdP) 搭配使用,以验证与每个用户关联的 Google 账号。您可以使用 Google 账号名称来验证用户的 Google 账号是否存在,这对于用户在设备上登录时进行用户身份验证至关重要。例如,在场景 2 中,可以使用 SAML。如需详细了解如何进行设置,请参阅为 G Suite 账号设置单点登录 (SSO)

在设备上激活账号

如需通过受管理的 Google Play 将应用分发到用户设备,用户必须在设备配置期间登录设备:

  • 受管理的 Google Play 账号设备配置中,DPC 会引导用户使用 EMM 控制台接受的凭据(通常是公司电子邮件凭据)登录。
  • 在 Google 账号部署中,DPC 会引导用户输入其 Google 账号登录凭据。通常,这些凭据与用户在与 GCDS 或 GSPS 同步时或组织使用 IdP 进行身份验证时用于登录其公司网域的凭据一致。这会激活用户的 Google 账号、生成唯一的设备 ID,并将用户的 Google 账号身份与其设备的设备 ID 绑定。