Skip to main content

概述

认证 API 提供用户注册、登录、电子邮件验证、密码重置和 OAuth 集成的端点。

标头

对于已认证的函数调用:
对于管理员端点:

注册用户

创建新用户账户。

查询参数

请求体

示例(Web 客户端)

示例(非 Web 客户端)

响应(Web 客户端)

响应(非 Web 客户端)

  • 对于 Web 客户端:返回 csrfToken,刷新令牌存储在 httpOnly Cookie 中。
  • 对于 非 Web 客户端mobiledesktopserver):直接在响应中返回 refreshToken。安全地将其存储在您的客户端或服务器运行时中。
  • 使用 server 用于受信任的服务器端调用者,例如 SSR 应用、BFF 或无法依赖浏览器 Cookie 的 CLI。
  • 如果 requireEmailVerificationtrueaccessToken 和令牌将为 null,用户必须在登录前验证其电子邮件。

登录

认证用户并获取访问令牌。

查询参数

请求体

示例(Web 客户端)

示例(非 Web 客户端)

响应(Web 客户端)

响应(非 Web 客户端)

  • 对于 Web 客户端:返回 csrfToken,刷新令牌存储在 httpOnly Cookie 中。调用 /api/auth/refresh 时在 X-CSRF-Token 标头中包含 csrfToken
  • 对于 非 Web 客户端mobiledesktopserver):直接返回 refreshToken。安全地存储它,并在调用 /api/auth/refresh 时在请求体中包含它。

邮箱 OTP 登录

当用户需要通过发送到邮箱的 6 位验证码进行免密码登录时,使用此流程。

发送登录验证码

请求体

该端点返回带通用消息的 202 Accepted,不会透露此邮箱是否已经属于某个用户。

使用验证码创建会话

查询参数

请求体

响应使用与密码登录相同的会话结构和 client_type 行为。
  • 验证码有效期为 5 分钟,只能使用一次,并会在三次失败尝试后失效。
  • InsForge 不会在发送验证码时创建用户。如果邮箱尚未注册,只会在验证成功后创建已验证的免密码用户。
  • 为现有的未验证账户验证验证码会清除其已存储的密码,使该账户变为免密码。
  • 如果已禁用公开注册,现有用户仍可登录。未知邮箱的有效验证码会被消费,并返回 HTTP 403。

刷新令牌

使用刷新令牌刷新访问令牌。

查询参数

标头(Web 客户端)

请求体(非 Web 客户端)

示例(Web 客户端)

示例(非 Web 客户端)

响应(Web 客户端)

响应(非 Web 客户端)

令牌轮换已为安全性而实现:
  • Web 客户端:每次刷新都返回一个新的 csrfToken,该令牌必须用于后续刷新请求。
  • 非 Web 客户端mobiledesktopserver):每次刷新都返回一个新的 refreshToken。您必须持久化此新令牌并将其用于下一次刷新。在内存中更新 accessToken

登出

登出并清除刷新令牌 Cookie。

示例

响应


获取当前用户

从 JWT 令牌获取当前已认证用户的信息。 此 REST 端点不会自动刷新过期的访问令牌。
  • 对于原始 REST 客户端,在需要时调用 POST /api/auth/refresh
  • 对于使用 TypeScript SDK 的浏览器应用,在启动期间调用 auth.getCurrentUser()。SDK 将在可以刷新会话时自动使用 httpOnly 刷新 Cookie。
  • 此自动刷新行为仅限浏览器。服务器、移动和其他非浏览器客户端应显式刷新。

示例

响应


更新个人资料

更新当前用户的个人资料。

请求体

示例

响应


获取用户个人资料

按 ID 获取用户的公开个人资料信息。

示例

响应


电子邮件验证

发送验证电子邮件

请求体

示例

响应

验证电子邮件

查询参数

请求体

对于基于链接的验证,电子邮件点击使用:
该面向浏览器的 GET 流在后端验证令牌并重定向到存储的 redirectTo URL。POST /api/auth/email/verify 是用于 6 位代码提交的 JSON API。 像这样处理浏览器重定向:
  • 成功:?insforge_status=success&insforge_type=verify_email
  • 错误:?insforge_status=error&insforge_type=verify_email&insforge_error=...
  • insforge_status:浏览器链接流的结果。对于验证,值为 successerror
  • insforge_type:流标识符。对于验证链接,这始终是 verify_email
  • insforge_error:仅当 insforge_status=error 时出现。可显示或记录的人类可读错误消息。
  • 推荐处理:使用您的登录页面作为 redirectTo。当 insforge_status=success 时,显示确认消息并要求用户使用其电子邮件和密码登录。
  • 如果 redirectTo 未被允许列表,InsForge 会返回 400 错误,其消息包括被拒绝的 URL,nextActions 告诉您将其添加到 allowedRedirectUrls

示例(Web 客户端)

示例(非 Web 客户端)

响应(Web 客户端)

响应(非 Web 客户端)


密码重置

发送重置电子邮件

请求体

示例

交换代码获取令牌(仅代码方法)

请求体

示例

响应

重置密码

对于基于链接的密码重置,电子邮件点击使用:
该面向浏览器的 GET 流在后端验证令牌并重定向到存储的 redirectTo URL,查询字符串中包含重置令牌。POST /api/auth/email/reset-password 仍然是接受新密码的 JSON API。 像这样处理浏览器重定向:
  • 准备重置:?token=...&insforge_status=ready&insforge_type=reset_password
  • 错误:?insforge_status=error&insforge_type=reset_password&insforge_error=...
  • token:仅当 insforge_status=ready 时出现。将此值作为 otp 传递给 POST /api/auth/email/reset-password
  • insforge_status:浏览器链接流的结果。对于重置链接,值为 readyerror
  • insforge_type:流标识符。对于重置链接,这始终是 reset_password
  • insforge_error:仅当 insforge_status=error 时出现。可显示或记录的人类可读错误消息。
  • 您的应用应仅在 insforge_status=readytoken 存在时呈现重置密码表单。

请求体

示例

响应


OAuth 认证

OAuth 认证现在使用 PKCE(代码交换证明密钥)流以增强安全性。不是直接在重定向 URL 中返回令牌,而是返回必须使用授权码交换令牌的授权码。

启动 OAuth 流

对于在仪表板中配置的自定义提供程序,使用:

查询参数

仅当额外的查询参数与服务器拥有的 OAuth 字段不冲突时,才会将其作为提供程序特定的提示转发。不要传递 client_idredirect_uricode_challengestateresponse_typescope;InsForge/提供程序生成的值获胜,冲突的客户端值被忽略。

支持的提供程序

  • google
  • github
  • discord
  • linkedin
  • facebook
  • apple
  • microsoft
  • x
  • spotify
  • GET /api/auth/public-configcustomOAuthProviders 中返回的任何自定义提供程序密钥

示例

响应

OAuth 回调

用户使用提供程序认证后,他们将被重定向到您的 redirect_uri,并带上授权码:
insforge_code 是一个临时授权码,必须使用 /api/auth/oauth/exchange 端点交换为令牌。

交换代码获取令牌

交换授权码获取访问令牌和刷新令牌。

查询参数

请求体

示例

响应

  • 对于 Web 客户端refreshToken 将为 null,并返回 csrfToken。刷新令牌存储在 httpOnly Cookie 中。
  • 对于 非 Web 客户端mobiledesktopserver):直接返回 refreshToken。安全地存储它。

完整 OAuth 流示例(非 Web)


公开配置

获取公开认证设置(无需认证)。

示例

响应


管理员端点

这些端点需要 project_admin 角色。

列出所有用户

按 ID 获取用户

删除用户

生成匿名令牌

获取认证配置

获取当前认证设置(仅管理员)。

示例

响应

allowedRedirectUrls 条目与完整的 redirectTo 值匹配,包括方案、主机、可选端口和路径。
  • 精确条目必须完全匹配,例如 https://myapp.com/dashboard
  • 通配符仅在主机部分支持,例如 https://*.myapp.com/callback
  • 深层链接在明确列出时允许,例如 com.example.app:/oauth2redirectmyapp://auth/callback
  • 如果 allowedRedirectUrls 为空,InsForge 允许所有重定向以方便开发者。这对生产不安全,应在本地开发之外避免。

更新认证配置

更新认证设置(仅管理员)。

请求体

示例

交换管理员会话

交换云提供程序授权码获取管理员会话。

请求体

示例

响应

获取当前管理员会话

从项目管理员访问令牌获取当前仪表板管理员会话。

响应

刷新管理员会话

刷新仪表板管理员访问令牌。此端点使用仅限仪表板的 insforge_admin_refresh_token httpOnly Cookie,不共享应用/用户刷新 Cookie。

登出管理员会话


错误响应

无效凭据 (401)

用户已存在 (409)

电子邮件未验证 (403)