配置用户帐号

身份配置(或帐号配置)是设置帐号并在这三个系统之间建立连接的过程,在某些情况下,也是在用户及其设备之间建立连接的过程。

在 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 解决方案的组件(EMM 控制台、EMM 服务器和 DPC)中使用 Google Play EMM API 和 Android 框架 API 以编程方式按需创建的。这些组件会在运行时交互,以创建用户帐号并在目标设备上预配工作资料。您的 EMM 控制台或服务器必须:

  • 提供一种机制,以创建要在调用 Users.insert 中使用的唯一匿名帐号标识符(accountIdentifier 字段)。例如,您可以使用用户的一些内部值(“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 企业版帐号的企业。执行此操作时,与企业关联的设备和用户帐号最终会被删除,如取消注册、重新注册、删除中所述。

账号到期

账号或其令牌偶尔会过期,导致这种情况的原因有很多:

  • 为将帐号添加到设备而获取的身份验证令牌已过期。
  • 相应帐号或企业已被删除
  • 对于设备帐号,该帐号已添加到新设备,因此在旧设备上处于停用状态。
  • 系统会触发自动滥用行为检查。

在大多数情况下(除非 EMM 有意将设备帐号移至新设备),最佳做法是使用 Play EMM API 从 EMM 服务器请求新令牌,记下帐号和企业的状态以及所有返回的错误,然后对设备采取适当的措施。例如,您可以刷新令牌,如果错误不可恢复,还可以重置或取消注册设备。

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 同步活跃目录和/或密码:

  • 使用 Directory API 进行仅限目录同步。如果您拥有对组织的托管 Google 网域的只读权限,则可以使用 Google Directory API 从 Google 获取 Google 帐号信息,例如用户名(而不是密码)。由于您无法将任何数据写入用户的 Google 帐号,因此组织对帐号生命周期全权负责。

    场景 1基于 SAML 的单点登录身份验证场景更全面地介绍了这种情况。

    如需了解如何以这种方式使用 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。