应用数据结构
介绍
在 Logto 中,应用 指的是在 Logto 平台上注册的软件程序或服务,并被授予访问用户信息或代表用户执行操作的授权。应用用于识别向 Logto API 发出请求的来源,以及管理用户访问这些应用的认证 (Authentication) 和授权 (Authorization) 过程。
在 Logto 的登录体验中使用应用允许用户从一个位置轻松访问和管理他们授权的应用,并提供一致且安全的认证 (Authentication) 过程。这有助于简化用户体验,并确保只有授权的个人才能访问敏感信息或代表组织执行操作。
应用还用于 Logto 的审计日志中,以跟踪用户活动并识别任何潜在的安全威胁或漏洞。通过将特定操作与特定应用关联,Logto 可以提供有关数据如何被访问和使用的详细见解,使组织能够更好地管理其安全性和合规性要求。如果你想将应用与 Logto 集成,请参阅集成 Logto。
属性
应用 ID
应用 ID 是一个用于在 Logto 中标识你的应用的唯一自动生成的密钥,在 OAuth 2.0 中被称为 client id。
应用类型
应用 可以是以下应用类型之一:
- 原生应用是在本地环境中运行的应用。例如,iOS 应用,Android 应用。
- 设备流应用是一种特殊类型的原生应用,适用于输入受限设备或无头应用(例如,智能电视、游戏机、CLI 工具、IoT 设备)。它使用 OAuth 2.0 设备授权许可 而不是标准的基于重定向的流程。详情请参阅设备流快速入门。
- 单页应用是在网络浏览器中运行的应用,它通过从服务器获取新数据来更新页面,而无需加载整个新页面。例如,React DOM 应用,Vue 应用。
- 传统 Web 应用是由 Web 服务器单独渲染和更新页面的应用。例如,JSP,PHP。
- 机器对机器 (M2M) 应用是在机器环境中运行的应用,用于直接的服务对服务通信,无需用户交互。
应用密钥
应用密钥 是用于在认证 (Authentication) 系统中认证 (Authentication) 应用的密钥,特别是对于私有客户端(传统 Web 和 M2M 应用)作为私有安全屏障。
单页应用 (SPA) 和原生应用不提供应用密钥。SPA 和原生应用是“公共客户端”,无法保密(浏览器代码或应用包是可检查的)。Logto 通过 PKCE、严格的重定向 URI / CORS 验证、短期访问令牌和刷新令牌轮换来保护它们,而不是应用密钥。
应用名称
应用名称 是应用的人类可读名称,将显示在管理控制台中。
应用名称 是在 Logto 中管理应用的重要组成部分,因为它允许管理员轻松识别和跟踪平台内各个应用的活动。
需要注意的是,应用名称 应该被仔细选择,因为它将对所有有权访问管理控制台的用户可见。它应该准确反映应用的目的和功能,同时也易于理解和识别。
描述
应用的简要描述将显示在管理控制台的应用详情页面上。描述旨在为管理员提供有关应用的附加信息,例如其目的、功能和任何其他相关细节。
重定向 URI
重定向 URI 是为应用预先配置的一组有效重定向 URI。当用户登录到 Logto 并尝试访问应用时,他们将被重定向到应用设置中指定的允许 URI 之一。
允许的 URI 列表用于验证应用在认证 (Authentication) 过程中发送给 Logto 的授权请求中包含的重定向 URI。如果授权请求中指定的重定向 URI 与应用设置中的允许 URI 之一匹配,则用户在成功认证 (Authentication) 后将被重定向到该 URI。如果重定向 URI 不在允许列表中,用户将不会被重定向,认证 (Authentication) 过程将失败。
确保所有有效的重定向 URI 都被添加到 Logto 中应用的允许列表中,以确保用户在认证 (Authentication) 后能够成功访问应用。
你可以查看 重定向端点 以获取更多信息。
理解 OIDC 中的重定向 URI 与授权码流程
通配符模式
适用范围:单页应用,传统 Web 应用
重定向 URI 支持通配符模式 (*) 以适应动态环境,例如预览部署。通配符可以用于 HTTP / HTTPS URI 的主机名和路径名组件。
规则:
- 通配符仅允许在主机名和路径名中使用
- 通配符不允许在方案、端口、查询参数或哈希片段中使用
- 主机名通配符必须至少包含一个点(例如,
https://*.example.com/callback)
示例:
https://*.example.com/callback- 匹配任何子域https://preview-*.example.com/callback- 匹配预览部署https://example.com/*/callback- 匹配任何路径段
通配符重定向 URI 不是标准 OIDC,可能会增加攻击面。请谨慎使用,并尽可能使用精确的重定向 URI。
签出后重定向 URI
签出后重定向 URI 是为应用预先配置的一组有效 URI,用于在用户从 Logto 签出后重定向用户。
使用允许的 签出后重定向 URI 进行注销是 OIDC 中 RP 发起(依赖方发起)注销规范的一部分。此规范提供了一种标准化的方法,允许应用为用户发起注销请求,包括在用户签出后将其重定向到预先配置的端点。
当用户从 Logto 签出时,他们的会话将被终止,并被重定向到应用设置中指定的允许 URI 之一。这确保了用户在签出后仅被引导到授权和有效的端点,有助于防止未经授权的访问和与将用户重定向到未知或未经验证的端点相关的安全风险。
你可以查看 RP 发起的注销 以获取更多信息。
CORS 允许的来源
CORS(跨域资源共享)允许的来源 是一组允许的来源,应用可以从这些来源向 Logto 服务发出请求。任何不在允许列表中的来源将无法向 Logto 服务发出请求。
CORS 允许的来源列表用于限制未经授权的域对 Logto 服务的访问,并帮助防止跨站请求伪造 (CSRF) 攻击。通过在 Logto 中为应用指定允许的来源,服务可以确保只有授权的域能够向服务发出请求。
允许的来源列表应包含应用将被服务的来源。这确保了来自应用的请求被允许,而来自未经授权来源的请求被阻止。
OpenID 提供者配置端点
授权端点
授权端点 是一个 OIDC 术语,它是用于启动用户认证 (Authentication) 过程的必需端点。当用户尝试访问已在 Logto 平台上注册的受保护资源或应用时,他们将被重定向到 授权端点 以认证 (Authentication) 其身份并获得访问请求资源的授权。
你可以查看 授权端点 以获取更多信息。
令牌端点
令牌端点 是一个 OIDC 术语,它是一个 Web API 端点,OIDC 客户端用于从 OIDC 提供者获取访问令牌、ID 令牌或刷新令牌。
当 OIDC 客户端需要获取访问令牌或 ID 令牌时,它会向令牌端点发送一个包含授权许可的请求,通常是授权码或刷新令牌。令牌端点然后验证授权许可,如果许可有效,则向客户端发放访问令牌或 ID 令牌。
你可以查看 令牌端点 以获取更多信息。
用户信息端点
OpenID Connect 用户信息端点。
始终发放刷新令牌
适用范围:传统 Web,SPA
启用后,Logto 将始终发放刷新令牌,无论认证 (Authentication) 请求中是否出现 prompt=consent,也无论权限 (Scopes) 中是否出现 offline_access。
然而,除非必要(通常对某些需要刷新令牌的第三方 OAuth 集成有用),否则不建议这样做,因为这与 OpenID Connect 不兼容,可能会导致问题。
刷新令牌轮换
默认:true
启用后,Logto 将在以下条件下为令牌请求发放新的刷新令牌:
- 如果刷新令牌已被轮换(通过发放新令牌延长其 TTL)一年;或
- 如果刷新令牌接近其过期时间(>=70% 的原始生存时间 (TTL) 已过);或
- 如果客户端是公共客户端,例如原生应用或单页应用 (SPA)。
对于公共客户端,当启用此功能时,客户端使用刷新令牌交换新访问令牌时将始终发放新刷新令牌。虽然你仍然可以为这些公共客户端关闭此功能,但强烈建议出于安全原因保持启用。
刷新令牌生存时间 (TTL)(天)
适用范围:非 SPA;默认:14 天
刷新令牌在过期并失效之前可用于请求新访问令牌的持续时间。令牌请求将刷新令牌的 TTL 扩展到此值。
通常,较低的值是首选。
注意:出于安全原因,SPA(单页应用)中不提供 TTL 刷新。这意味着 Logto 不会通过令牌请求来扩展 TTL。为了提升用户体验,你可以启用“刷新令牌轮换”功能,允许 Logto 在必要时发放新刷新令牌。
当在授权请求中没有包含 offline_access 权限 (Scope) 时发放的刷新令牌将绑定到用户会话。会话的固定 TTL 为 14 天。会话过期后,刷新令牌将失效,无论其自身的 TTL 设置如何。
为了确保刷新令牌 TTL 设置完全生效,请确保在授权请求中包含 offline_access 权限 (Scope)。
后端注销 URI
OpenID Connect 后端注销端点。有关更多信息,请参阅 联合注销:后端注销。
最大允许授权 (maxAllowedGrants)
maxAllowedGrants 是 customClientMetadata 下的一个可选应用级字段,用于控制当前应用每个用户的最大并发活动授权数。
- 默认:
undefined(无限制) - 配置时:在每次成功授权时,Logto 会检查当前应用中用户的总活动授权数(跨浏览器和设备)。如果超过限制,Logto 将撤销最旧的授权。
当你想限制每个应用的并发认证 (Authentication) 设备时,此设置非常有用。
此字段不支持以下应用:
- 机器对机器应用
- 受保护应用
- SAML 应用
自定义数据
未在预定义应用属性中列出的其他自定义应用信息,用户可以根据其具体需求定义自己的自定义数据字段,例如业务特定的设置和配置。