身份配置(或账号配置)是指设置账号并在三个系统之间建立连接的过程,在某些情况下,还包括在用户与其设备之间建立连接。
在 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)。 | 未设置。 |
accountType | deviceAccount、userAccount | userAccount |
displayName | 您要在界面项(例如 Google Play 中)中显示的名称。请勿使用个人身份信息。 | 未设置。 |
managementType | emmManaged | googleManaged、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 用户账号
- 用户使用公司凭据(通常)登录您的 DPC。
- DPC 会向 EMM 服务器或控制台请求用户的详细信息。假设您的系统不认识该用户:
- 通过调用
Users.insert
并提供新的accountIdentifier
、displayName
和accountType
值,提交新的 Google Play 企业版账号请求。- 您的系统必须创建
accountIdentifier
。账号标识符必须是系统中唯一的值。请勿将个人身份信息用作账号标识符。 displayName
显示在 Google Play 商店的账号切换器中,应对用户有一定意义(但不能是用户的个人身份信息)。例如,名称可以包含组织名称或与 EMM 相关的通用名称。- 将
accountType
设置为userAccount
或deviceAccount
。userAccount
可在多部设备上使用,而deviceAccount
仅适用于单部设备。指定的accountType
可以是deviceType
或userType
。 - 将
managementType
设置为emmManaged
。
- 您的系统必须创建
- Google Play 会处理请求、创建账号,然后返回
userId
。 - 将
accountIdentifier
和userId
之间的映射存储在数据存储区中。 - 使用
userId
和enterpriseId
调用Users.generateAuthenticationToken
。Google Play 会返回一个可单次使用的身份验证令牌,且必须在几分钟内使用。 - 将身份验证令牌安全地转发给您的 DPC。
- 通过调用
- DPC 会预配工作资料,并将账号添加到工作资料或设备。
- 用户可以在工作资料或设备中访问受管理的 Google Play。
管理员账号
当管理员创建包含受管 Google Play 账号的企业时,所使用的 Google 账号不能是 G Suite 账号。他们使用的账号会成为企业的所有者,所有者可以在 Google Play 企业版管理中心内添加更多所有者和管理员。
Enterprises.get
和 Enterprises.completeSignup
都会返回与企业(仅限使用 Google Play 企业版账号的企业)关联的管理员电子邮件地址列表。
管理账号生命周期
在 Google Play 企业版账号部署中,您负责用户账号和设备账号生命周期,也就是说,您负责创建、更新和删除这些账号。
您可以在设备配置期间创建账号,该流程涉及 DPC 应用和 EMM 控制台。如需了解相关说明,请参阅受管理的 Google Play 账号方法。
如需更改账号的信息,请调用 Users.update。
如需删除账号,请调用 Users.delete。
管理员无法删除个人账号,但可以删除使用 Google Play 企业版账号的企业。这样一来,与该企业关联的设备和用户账号最终会被删除,如取消注册、重新注册和删除中所述。
账号到期
账号或其令牌有时会过期,这可能有多种原因:
- 用于将账号添加到设备的身份验证令牌已过期。
- 账号或企业已被删除。
- 对于设备账号,该账号已添加到新设备,因此会在旧设备上停用。
- 系统会触发自动滥用行为检查。
- 如果设备离线超过 270 天,其信息可能会因批量清理流程而被删除。
在大多数情况下(除非 EMM 有意将设备账号移至新设备),最佳实践是使用 Play EMM API 向 EMM 服务器请求新的令牌,记下账号和企业的状态以及返回的任何错误,然后对设备采取适当的措施。例如,续订令牌;如果无法恢复错误,请重置或取消注册设备。
如需正确续订令牌,您应:
- 调用
users.generateAuthenticationToken
以请求为该账号获取新的身份验证令牌。 - 如果调用成功,请移除现有账号,然后使用 DPC 支持库添加新账号。
- 如果调用失败,请从设备中移除该账号,然后使用
users.insert
创建新用户、生成身份验证令牌,并将该账号添加到设备。
Google Play 服务版本 9.0.00 会使用广播操作通知您的 DPC 账号已过期:
当设备上的受管 Google Play 账号失效时,DPC 会收到一个包含以下操作的广播:
com.google.android.gms.auth.ACCOUNT_REAUTH_REQUIRED
广播 intent 包含一个名为
account
的Parcelable
extra,它是失效账号的
对象。Account
DPC 会与 EMM 服务器检查
Account#name
,以识别失效的账号。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:客户负责账号生命周期
在这种情况下,您的客户会为其用户创建和维护 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 负责账号生命周期
在这种情况下,您代表客户处理创建 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 绑定。