Docs 菜单
Docs 主页
/ /
Atlas App Services

验证和管理用户

在此页面上

  • 简介
  • 概念
  • 对提供商进行身份验证
  • 用户账户
  • 身份验证提供者身份
  • 活跃用户
  • 系统用户
  • 用户会话
  • 总结

Atlas App Services 管理应用程序最终用户的身份验证。App Services:

  • 使用基于角色的数据访问规则来确定读取和写入权限。

  • 将每个请求与经过身份验证的用户关联

  • 评估包含请求的每个对象的权限。

通过用户帐户,可以存储和访问每个用户的元数据和自定义数据。

用户通过身份验证提供商登录。每个提供商代表一种特定的身份验证方法。

App Services 包括常见使用案例的内置提供程序,例如 Facebook 和 Google。自定义提供程序允许您集成任何外部身份验证系统。

下图显示了客户端应用、Atlas App Services 和身份验证提供程序如何交互以对用户进行身份验证:

身份验证过程概述。

在 App Services 中,身份验证提供者是一项模块化服务。此类服务可提供身份验证,并维护有关应用用户的信息。

用户通过向身份验证提供程序提供一组档案来对自身进行身份验证。通过有效凭证,提供者将返回与用户关联的唯一身份。 App Services 将其记录为活动用户。

App Services 包括用于常见使用案例的内置身份验证提供程序。这包括:

您可以配置自定义提供程序以集成外部身份验证系统。

  • 自定义 JWT:提供程序接受由外部系统签名的 JSON 网络令牌。

  • 自定义函数:提供程序支持在 Atlas Function 中定义自定义登录逻辑。

重要

应用需进行用户身份验证

每个应用程序均须至少配置并启用一个身份验证提供程序。如果没有至少一个提供程序,则任何客户端应用程序都无法进行连接。要了解如何配置和启用身份验证提供程序,请参阅:身份验证提供程序

用户账户表示应用程序的单个不同用户。当身份验证提供程序验证唯一身份时,App Services 会创建用户。您可以从身份验证提供程序获取用户元数据,例如电子邮件或生日。您可以将每个用户与自定义数据相关联。

提示

苹果帐号删除要求

Apple 要求通过 App Store 必须为创建帐户的任何用户提供删除帐户的选项。无论该应用程序使用的是必须手动注册用户的身份验证方法(例如电子邮件/密码身份验证),还是自动创建用户的身份验证方法(例如“通过 Apple 登录”),通过 App Store 分发的应用程序都必须实现 用户帐户删除。

App Services 将用户的登录元数据存储在身份验证提供程序的标识中。App Services 使用此元数据对用户进行身份验证。

首次登录身份验证提供者时,App Services 会创建一个身份对象。每个对象都包含一个唯一的 ID 以及有关用户的特定提供者的元数据。以后登录时,App Services 将刷新现有身份数据。

一个用户帐户可以有多个身份。Realm SDK 使您能够将身份与现有用户帐户关联。这样,用户就可以通过多个身份提供程序登录一个帐户。有关更多信息,请参阅客户端 SDK 的身份关联文档。

在 Realm SDK 中,您可以登录多个用户,但同一时间只能有一个帐户处于活动状态。活动用户是与应用程序请求关联的用户帐户。

App Services 会以活跃用户身份执行来自客户端应用程序的请求。App Services 会替换该用户的动态引用,例如以该活跃用户身份替换 JSON 表达式中的 %%user

可以使用特定的活跃用户或系统用户来执行函数。

系统用户是拥有高级权限的内部用户。系统用户可绕过所有规则。您可以作为系统用户而不是提出请求的用户执行函数。触发器在系统用户的上下文中运行。

系统用户对于管理任务很有用。这包括:

  • 需规避规则和查询的任务

  • 需要不受限制访问 MongoDB CRUD 和聚合操作的任务

重要

安全警告

规则不适用于系统用户。以系统用户身份运行的函数可能会成为安全隐患。确保您未将这些函数暴露给未经授权的用户。

例如,使用函数上下文检查活动用户能否调用系统函数。定义一个条件来确定用户是否具有适当的权限,例如:

exports = function() {
const activeUser = context.user
const adminUserId = context.values.get("adminUserId");
if(activeUser.id == adminUserId) {
// The user can only execute code here if they're an admin.
} else {
throw Error("This user is not allowed to execute the system function")
}
}

用户会话表示经过身份验证的用户可以与应用程序交互的时间段。当用户通过 SDK 登录或通过 HTTPS 进行身份验证时,用户会话开始。除非 SDK 或 API 请求刷新会话,否则会话将在 30 分钟后结束。

要了解如何创建、使用和撤销用户会话,请参阅管理用户会话

  • App Services 通过各种身份验证提供者支持身份验证和用户帐户。您可以将用户与多个身份验证提供者相关联。

  • App Services 支持多个用户同时登录。一次只有一个活动用户

  • 系统用户是可绕过所有规则的特殊用户。

  • Realm SDK 会管理访问权限,并刷新构成用户会话的令牌。

← 部署模式和地区