Skip to content

认证

配置密码登录,单点登录服务商 API 令牌。

Memos 支持三种主要的认证机制:

  • 基于密码的注册和登录
  • OAuth2 或是单点登录认证服务商
  • 给 API 使用的个人访问令牌

会话模型

令牌类型生命周期存储方式提示
Access token (JWT)15 分钟客户端的内存中无状态 - 无需查询数据库即可验证
Refresh token (JWT)30 天只有 HTTP cookie基于数据库,可撤销
个人访问令牌 (PAT)用户自行选择数据库内,SHA-256 哈希串格式: memos_pat_<32 位随机串>

PAT 的原始值只会在创建时显示一次,数据库中仅存储其 SHA-256 哈希值。

对于自动化工具和外部工具,建议使用个人访问令牌,而不是使用浏览器 cookie。

密码认证

密码认证是默认启用的,在单用户或是小型私有实例上,密码又简单又好用。

在以下情况中,密码认证方式通常是一个好的开始:

  • 实例属于个人,或是非常小。
  • 你没有中心的认证服务。
  • 你希望本次安装尽可能简单一些。

禁用密码认证

当配置好单点登录后,管理员可以禁用普通用户的密码认证。除非你确定至少有一个单点登录服务可用,不然请勿禁用密码认证。

OAuth2 和单点登录

当你正在使用一个第三方的身份认证作为用户中心服务时,单点登录对一个团队型实例来说是一个很好的选择。在实例配置中配置好服务提供商,在强制整个实例仅可以使用单点登录之前,一定要先测试一下非管理员用户的单点登录是否可用。

OAuth2 服务提供商的字段

每个身份认证服务都需要如下字段:

  • OAuth2 应用的 clientIdclientSecret
  • 服务商 OAuth2 端点的 authUrltokenUrluserInfoUrl
  • 令牌所需要的 scopes
  • fieldMapping 将服务商商的用户信息字段映射到 Memos 所指定的字段(identifierdisplayNameemailavatarUrl
  • 可选:identifierFilter — 应用在身份信息上的正则表达式,不匹配正则的用户将被拒之门外。

Memos 实例的 OAuth2 回调 URL 是:https://<你的实例名>/auth/callback

GitHub

json
{
  "title": "GitHub",
  "type": "OAUTH2",
  "config": {
    "oauth2Config": {
      "clientId": "<your-client-id>",
      "clientSecret": "<your-client-secret>",
      "authUrl": "https://github.com/login/oauth/authorize",
      "tokenUrl": "https://github.com/login/oauth/access_token",
      "userInfoUrl": "https://api.github.com/user",
      "scopes": ["read:user", "user:email"],
      "fieldMapping": {
        "identifier": "login",
        "displayName": "名字",
        "email": "电子邮箱",
        "avatarUrl": "用户头像"
      }
    }
  }
}

Google

json
{
  "title": "Google",
  "type": "OAUTH2",
  "config": {
    "oauth2Config": {
      "clientId": "<your-client-id>",
      "clientSecret": "<your-client-secret>",
      "authUrl": "https://accounts.google.com/o/oauth2/v2/auth",
      "tokenUrl": "https://oauth2.googleapis.com/token",
      "userInfoUrl": "https://www.googleapis.com/oauth2/v2/userinfo",
      "scopes": ["openid", "profile", "email"],
      "fieldMapping": {
        "identifier": "email",
        "displayName": "名字",
        "email": "电子邮箱",
        "avatarUrl": "用户头像"
      }
    }
  }
}

个人访问令牌(PAT)

PAT 适用于脚本、外部系统的集成、或是外部工具。

通常在下列情景会使用到 PAT:

  • 自动化脚本或程序中调用 API
  • 与外部服务集成时
  • 为了避免用户界面的的交互

操作指南

  • 创建令牌时,尽可能缩小令牌的作用域
  • 定期轮换
  • 及时删除再也不会使用的令牌
  • 不要将 PAT 写在用户端或前端代码中

最后更新于:

评论区
评论区空空如也
发送评论
名字
0 / 20
邮箱
0 / 100
评论内容
0 / 140
由于是非实名评论,所以不提供删除功能。如果你需要删除你发送的评论,或者是其他人的评论对你造成了困扰,请 发邮件给我 。同时评论区会使用 AI + 人工的方式进行审核,以达到合规要求。