跳转到主要内容

概述

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

标头

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

注册用户

创建新用户账户。

查询参数

参数类型必需描述
client_typestring客户端类型:web(默认)、mobiledesktopserver

请求体

字段类型必需描述
emailstring用户电子邮件地址
passwordstring密码(必须符合配置的要求)
namestring用户显示名称
redirectTostring用于基于链接的电子邮件验证。电子邮件链接始终先打开 InsForge 后端端点;令牌验证后,InsForge 将浏览器重定向到此 URL 并显示验证结果。当 verifyEmailMethodlink 时需要。此 URL 必须包含在 allowedRedirectUrls 中。推荐:使用您的应用的登录页面。

示例(Web 客户端)

示例(非 Web 客户端)

响应(Web 客户端)

响应(非 Web 客户端)

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

登录

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

查询参数

参数类型必需描述
client_typestring客户端类型:web(默认)、mobiledesktopserver

请求体

字段类型必需描述
emailstring用户电子邮件地址
passwordstring用户密码

示例(Web 客户端)

示例(非 Web 客户端)

响应(Web 客户端)

响应(非 Web 客户端)

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

刷新令牌

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

查询参数

参数类型必需描述
client_typestring客户端类型:web(默认)、mobiledesktopserver

标头(Web 客户端)

标头类型必需描述
X-CSRF-Tokenstring从登录/注册响应接收的 CSRF 令牌

请求体(非 Web 客户端)

字段类型必需描述
refreshTokenstring从登录/注册响应接收的刷新令牌

示例(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。
  • 此自动刷新行为仅限浏览器。服务器、移动和其他非浏览器客户端应显式刷新。

示例

响应


更新个人资料

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

请求体

字段类型必需描述
profileobject个人资料数据(名称、头像 URL、自定义字段)

示例

响应


获取用户个人资料

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

示例

响应


电子邮件验证

发送验证电子邮件

请求体

字段类型必需描述
emailstring用户电子邮件地址
redirectTostring用于基于链接的电子邮件验证。电子邮件链接始终先打开 InsForge 后端端点;令牌验证后,InsForge 将浏览器重定向到此 URL 并显示验证结果。当 verifyEmailMethodlink 时需要。此 URL 必须包含在 allowedRedirectUrls 中。推荐:使用您的应用的登录页面。

示例

响应

验证电子邮件

查询参数

参数类型必需描述
client_typestring客户端类型:web(默认)、mobiledesktopserver

请求体

字段类型必需描述
emailstring用户电子邮件地址
otpstring6 位验证码
对于基于链接的验证,电子邮件点击使用:
该面向浏览器的 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 客户端)


密码重置

发送重置电子邮件

请求体

字段类型必需描述
emailstring用户电子邮件地址
redirectTostring用于基于链接的密码重置。电子邮件链接始终先打开 InsForge 后端端点;InsForge 然后将浏览器重定向到此 URL,并在查询字符串中包含重置 token,以便您的应用可以呈现其自己的重置密码页面。当 resetPasswordMethodlink 时需要。此 URL 必须包含在 allowedRedirectUrls 中。推荐:使用您的应用的专用重置密码页面。

示例

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

请求体

字段类型必需描述
emailstring用户电子邮件地址
codestring电子邮件中的 6 位代码

示例

响应

重置密码

对于基于链接的密码重置,电子邮件点击使用:
该面向浏览器的 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 存在时呈现重置密码表单。

请求体

字段类型必需描述
newPasswordstring新密码
otpstring来自代码交换端点或魔法链接 URL 的重置令牌

示例

响应


OAuth 认证

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

启动 OAuth 流

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

查询参数

参数类型必需描述
redirect_uristring认证后要重定向到的 URL
code_challengestringPKCE 代码挑战(Base64 URL 编码的代码验证器的 SHA256 哈希)
其他字符串查询参数string提供程序特定的 OAuth 提示,例如 Google 的 prompt=select_account
仅当额外的查询参数与服务器拥有的 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 端点交换为令牌。

交换代码获取令牌

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

查询参数

参数类型必需描述
client_typestring客户端类型:web(默认)、mobiledesktopserver

请求体

字段类型必需描述
codestring回调中接收的 insforge_code
code_verifierstring用于生成 code_challenge 的原始 code_verifier

示例

响应

  • 对于 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 允许所有重定向以方便开发者。这对生产不安全,应在本地开发之外避免。

更新认证配置

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

请求体

字段类型必需描述
requireEmailVerificationboolean是否需要电子邮件验证
passwordMinLengthinteger最小密码长度(4-128)
requireNumberboolean密码中需要数字
requireLowercaseboolean密码中需要小写字母
requireUppercaseboolean密码中需要大写字母
requireSpecialCharboolean密码中需要特殊字符
verifyEmailMethodstring电子邮件验证方法(codelink
resetPasswordMethodstring密码重置方法(codelink
allowedRedirectUrlsarray允许重定向 URL 的列表。条目与完整的 redirectTo 值匹配。精确 URL 必须完全匹配,支持主机通配符如 https://*.domain.com/callback,当明确列出时允许自定义深层链接如 com.example.app:/oauth2redirect。如果为空,允许所有重定向,这对生产不安全。

示例

交换管理员会话

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

请求体

字段类型必需描述
codestringInsforge Cloud 的授权码或 JWT

示例

响应

获取当前管理员会话

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

响应

刷新管理员会话

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

登出管理员会话


错误响应

无效凭据 (401)

用户已存在 (409)

电子邮件未验证 (403)