安全 #

OAuth/OIDC 登录 #

Meldry 支持通过外部 OAuth/OIDC 身份提供商登录与绑定账号。

支持的提供商 #

提供商Scope
GitHubread:user user:email
Googleopenid email profile
微信snsapi_login
QQget_user_info
飞书 / Lark(默认)

具体可用的提供商取决于你所在平台的实际配置。

登录流程 #

  1. 在登录或注册页点击 使用 GitHub 登录(或其他提供商)。
  2. 在提供商的授权页面同意授权。
  3. 如果该 OAuth 身份已经绑定过 Meldry 账号,你会被直接登入。
  4. 否则你会进入一次性的选择页:
    • 创建新账号:使用提供商建议的用户名直接创建,或
    • 绑定已有 Meldry 账号:输入 Meldry 用户名与密码完成绑定。

绑定令牌是一次性的,10 分钟后失效。一旦使用,OAuth 身份就会永久绑定到该 Meldry 账号。

管理已绑定的账号 #

设置 → 安全 → 已绑定账号 中查看与管理。你可以随时解绑任意提供商。

常见问题 #

问题可能原因处理
"OAuth state expired"授权耗时超过 10 分钟重新发起登录流程
回调返回 404提供商侧回调地址不匹配联系支持
"{provider} OAuth not configured"该提供商未在平台启用改用其他提供商

双因素认证(2FA) #

启用步骤 #

  1. 进入 设置 → 安全 → 双因素认证
  2. 点击 启用 2FA
  3. 用身份验证器 App(Google Authenticator、Authy、1Password 等)扫描二维码。
  4. 输入 6 位验证码完成校验。
  5. 务必保存恢复码——它们是身份验证器丢失后的备用凭证。

使用 2FA 登录 #

输入用户名密码后,系统会要求你再输入身份验证器中的 6 位 TOTP 验证码。

受信任设备 #

你可以将某台设备标记为 "受信任",在该设备后续登录时跳过 TOTP 步骤。

  • 受信任设备由用户 ID、User-Agent 与 IP 的哈希共同标识
  • 受信任设备会在配置的有效期后自动失效
  • 设置 → 安全 → 受信任设备 → 全部撤销 中可一次性撤销

恢复码 #

每个恢复码只能使用 一次,可作为 TOTP 的替代。

  • 第一次显示时务必妥善保存
  • 设置 → 安全 → 2FA → 重新生成恢复码 中可重新生成(旧恢复码会全部失效)
  • 如果同时丢失身份验证器和所有恢复码,请联系支持进行账户恢复

密码策略 #

  • 长度:8–128 位
  • 常见密码黑名单:拒绝最常被泄露的前 200 个密码
  • 历史密码:不可重复使用最近 5 次的密码

修改密码时,Meldry 会校验长度与复杂度、检查黑名单,并确认未在最近 5 次历史中出现。

邮箱验证 #

完成邮箱验证后,你才能正常接收密码重置、计费及安全相关邮件:

  1. 进入 设置 → 安全
  2. 点击 发送验证邮件(限速 5 次 / 小时)。
  3. 点击邮件中的链接——你的邮箱状态会被标记为 "已验证"。

API 密钥 #

创建 #

  1. 进入 设置 → API Keys
  2. 点击 创建 API Key
  3. 起一个有意义的名字。
  4. 立即复制——密钥仅显示一次。

限速:每小时最多创建 5 个 API Key。

使用 #

bash
curl -H "Authorization: Bearer <your-api-key>" \
  https://your-server.meldry.com/api/me

撤销 #

设置 → API Keys 中点击删除图标即可立即撤销。

会话 #

设置 → 安全 → 会话 查看所有活跃会话,每条都会显示设备 / 浏览器、IP 与创建时间。

  • 撤销单条会话:点击对应的 撤销
  • 退出所有设备:点击 全部撤销

会话安全 #

  • 会话在 14 天 不活动后过期
  • 会话最长生命周期:30 天(绝对值)
  • 会话与浏览器 / 操作系统的 User-Agent 绑定
  • 修改密码时会话会被轮换

账户锁定 #

连续 5 次 登录失败后,账户会被锁定 15 分钟

CAPTCHA #

注册时 Meldry 可能会要求完成 CAPTCHA 校验,以防自动化滥用。支持 hCaptcha、reCAPTCHA 与 Cloudflare Turnstile。如果卡在 CAPTCHA,请刷新页面重试。

活动日志 #

账户上的每一次重要操作都会被记录到一份基于 SHA-256 哈希链 的防篡改活动日志中。

记录内容 #

  • 时间戳:事件发生时间
  • 事件类型:例如 user.loginserver.createbilling.upgrade
  • 来源 IP:请求的源 IP
  • 结果:成功或失败
  • 消息:可读的描述
  • 严重级别:info、warning、error

每条记录都包含上一条记录的 SHA-256 哈希。任何修改或删除都会破坏整条链,从而被察觉。

查看入口 #

打开 设置 → 安全 → 活动日志,即可查看你自己的审计日志条目。

保留期 #

日志按可配置的保留期保存(默认 90 天),过期记录会被自动清理。

数据导出(GDPR) #

设置 → 危险区 → 导出数据 中申请完整的数据导出。

导出内容包括:

  • 个人资料
  • 会话历史
  • OAuth 绑定
  • 订阅与支付记录
  • 工单与消息
  • 通知
  • 活动日志
  • 服务器设置与资源使用情况

导出结果以 ZIP 文件的形式提供。

账户删除(带宽限期) #

账户删除采用两阶段流程,附带 30 天宽限期

计划删除 #

  1. 进入 设置 → 危险区
  2. 点击 计划删除 并确认。
  3. 你的账户会被打上 deleted_at 时间戳。

宽限期 #

  • 你有 30 天 时间反悔
  • 宽限期内账户仍可正常使用
  • 仪表板会展示计划删除的时间

取消删除 #

宽限期内随时进入 设置 → 危险区 点击 取消删除,时间戳会被清除,账户继续正常使用。

永久删除 #

宽限期结束后,Meldry 会永久删除:

  • 你的账户与个人资料
  • 所有服务器数据(容器、数据库、媒体)
  • 会话历史与 OAuth 绑定
  • 订阅与支付记录

计划删除前,建议先导出你的数据。