简体中文
  • jwt
  • auth
  • 用户数据

用户数据安全枢纽在移动中

对比身份验证和用户数据。详细说明 Logto 的安全存储和移动过程。概述数据流最佳实践(属性映射、数据同步、自定义 JWT)。

Ran
Ran
Product & Design

用户元数据是身份和访问管理 (IAM) 服务的生命线。它为数据分析、个性化体验、安全监控和访问控制等产品功能提供动力。但随着应用程序在平台、组织和应用程序之间变得更加互连,管理用户元数据可能会变得复杂。别担心!通过了解用户数据的流动方式,你可以构建无缝且安全的身份验证体验。

身份验证数据 vs. 用户数据

并非所有用户数据都是一样的。身份验证数据是令牌颁发期间交换的特定子集。想象一下 JWT(JSON Web 令牌)在你的 HTTP 请求中传递。一个大的 JWT 会拖慢速度。为了保持快速和安全,我们仅包括必要的用户信息,如身份、账户状态、身份验证详细信息、权限和基本用户配置文件。

在 Logto,我们专注于存储以下身份验证数据点:

  • 账号状态:跟踪创建时间、更新、暂停状态和登录历史。包括 create_atupdated_ataccount_suspendedlast_ip
  • 身份验证信息:这包括用户标识符、身份验证因素和验证相关数据。包括 user_idpassword_digestpassword_algorithmusernameemailemail_verifiedphonephone_verifiedsocial_identitiessso_identitiesmfa_configmfa_verification_factors
  • 授权信息:管理角色、权限、组织成员资格以及授权的应用程序和设备以实现精细访问控制。包括 rolepermissionorganization_idorganization_roleorganization_permissiongrant_applicationgrant_device
  • 标准用户配置文件: 这是 OIDC 注册的最常见的用户配置文件。 Logto 还将其设置为默认用户元数据,存储在名称空间 'profile.' 下。包括 first_namelast_namemiddle_namenamenicknameprofilewebsiteavatargenderbirthdatezoneinfolocaleaddress

超越基础:使用 Logto 自定义用户数据

  • Logto 超越了标准配置文件。我们的管理 API 允许你定义特定于业务需求的自定义数据。这些数据存储在专用命名空间“custom.data”下,并安全地存储。以下是一些案例:occupationcompany_namecompany_size

跳出保险库思维:使用自定义 JWT 获取外部 API 数据

  • 某些业务数据可能不需要永久存储在 Logto 中。自定义 JWT 的美妙之处在于你可以通过 API 调用在令牌颁发期间动态获取这些数据,从而扩展用户数据的覆盖范围。记住,安全至关重要,避免在 JWT 中包含敏感信息,因为它们可以很容易地被解析。一些案例包括:subscribed_statuslast_path_visitedapp_theme

用户数据旅程:获取与分发

用户数据来自多种来源:

  • 用户输入: 在应用程序中进行注册、入职或配置文件更新期间输入的数据。
  • 身份提供商 (IdP): 在社交登录或企业 SSO 期间无缝同步。
  • 数据迁移: 从现有数据库中移动数据。
  • 管理员干预: 管理员通过控制台或数据库手动编辑。

获得这些有价值的数据后,你可以安全地共享:

  • 授予第三方应用权限: 为授权应用提供对用户数据的受控访问。
  • 数据导出: 从 Logto 导出用户数据以进行进一步分析。
  • 通过 JWT、Webhooks 或 API 传递: 将用户数据分享给内部服务以实现统一的用户体验。

作为一个身份中心,Logto 擅长于促进用户数据的流动。我们使得从各种提供商获取用户信息变得容易,并安全地将其传递给授权方。

关键点

现在你了解了用户数据旅程,让我们来探讨一些关键设计考虑:

  1. 属性映射 确保准确映射来自不同来源的用户属性,以避免数据孤岛。对于 SAML 连接,需进行手动映射。使用 OIDC 时,利用标准声明或创建唯一命名空间以防止冲突。
  2. IdP 和 RP 数据同步 IdP(身份提供商)与 RP(依赖方)之间的数据同步通常涉及授权和双方特定作用域请求。注意验证状态。从 GitHub 或 Azure AD 等 IdP 同步的“电子邮件验证=false”在你的系统中可能不被认为是验证邮件。根据情况进行处理。
  3. 在多实体结构中的数据隔离和覆盖 在具有多个组织、应用程序和提供商的复杂环境中,数据隔离和覆盖行为变得至关重要。
    • 多组织: 用户可以属于多个组织。区分存储在用户账户下的用户数据与特定于组织的数据。一个组织中的更改不应影响其他组织。
    • 多应用: 对于通过 Logto 共享用户数据库的应用,在你的服务中实施集中式账户设置或配置文件设置模块。
    • 多提供商: 具有多种登录方法的应用程序会从每个提供商接收不同的用户信息。在 Logto 中,可以选择在社交登录注册时或在企业 SSO 的每次登录时同步数据。社交登录适合前期数据同步,而企业 SSO 可以在每次登录时同步成员信息,以便在企业 IdP 内更容易管理。
  4. 通过自定义 JWT 扩展数据访问 自定义 JWT 的力量在于它们能够在令牌颁发期间通过 API 调用动态检索外部信息。这让你可以访问可能对核心功能不重要但可以丰富用户体验的数据点。记住,强大的灵活性伴随着巨大的责任。因为收到 JWT 的任何人都可以轻松解析它们,避免包含敏感数据。
  5. 渐进式注册以实现更顺畅的入职流程 不要让用户因填写像小说一样长的注册表单而感到不安。实施渐进式注册,这是一种技术,其中你起初只请求最关键的用户信息。这简化了注册过程并保持用户的参与。当用户与你的应用程序互动时,你可以逐渐收集额外的数据点,以建立更丰富的用户配置文件。

通过遵循这些最佳实践,你可以确保在身份验证过程中用户数据流动的顺畅和安全。

Logto:用户数据迁移的安全枢纽

有效管理用户元数据可让你个性化用户体验、增强安全性并获得关于用户行为的宝贵见解。通过利用 Logto 的安全和灵活平台,你可以释放用户数据的全部潜力,并在当今数据驱动的环境中获得竞争优势。