Outline 是一个功能完善、UI 简洁实用的 Wiki 程序,其线上托管版本需要付费,但提供免费、可以自行部署的 开源版本。Outline 不支持账号密码登录,而是需要通过 OIDC、SSO、SAML 等方式集成第三方的身份验证服务。本文介绍如何让自部署的 Outline 支持通过 GitHub 账号登录。
前提条件
- 已完成 Outline 部署,且可以在本机正常访问
登录到 Outline
页面(如图) - 记下 Outline 的根页面 URL(一般与 Outline 登录页面的 URL 一致,形如
https://docs.yourcompany.com/
)
步骤一:在 GitHub 中创建 OAuth Application
- 访问 GitHub 并登录
- 进入 OAuth Apps 页面(也可以依次点击:右上角头像 – Settings – Developer Settings – OAuth Apps)
- 点击
New OAuth App
- 填写
Register a new OAuth application
表单- Application name: 可自行填写,例如
outline
- Homepage URL: 填写 Outline 的根路径 URL
- Authorization callback URL: 填写
<Homepage URL>/auth/oidc.callback
,其中<Homepage URL>
需要替换为Outline 的根页面 URL
- Application name: 可自行填写,例如
- 点击
Register application
按钮
步骤二:获取 Client ID 和 Client secrets
- 进入 OAuth Apps 页面(也可以依次点击:右上角头像 – Settings – Developer Settings – OAuth Apps)
- 选择步骤一创建的应用
- 点击
Generate a new client secret
按钮 - 记下 Client ID 和 Client secret(注意 Client secret 仅在创建时显示一次,后续不可再查询;如不慎遗失,可以再次点击按钮重新创建一个)
步骤三:配置 Outline 环境变量
注意:在以下环境变量示例中,URL
, OIDC_CLIENT_ID
以及 OIDC_CLIENT_SECRET
需要根据实际情况填写(上文已经提示您需要记下并在这里填写的信息),其他环境变量为固定值,可以直接套用。
# 填写首页 URL(同时影响 OAuth 授权完成后跳转返回的 URL)
URL=<Homepage URL>
# 填写 GitHub OAuth application 的 Client ID 和 Client secret
OIDC_CLIENT_ID=<your-client-id>
OIDC_CLIENT_SECRET=<your-client-secret>
# 填写 GitHub 的 OAuth endpoint,参考 https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps#web-application-flow
OIDC_AUTH_URI=https://github.com/login/oauth/authorize
OIDC_TOKEN_URI=https://github.com/login/oauth/access_token
# OAuth 授权的权限范围
OIDC_SCOPES=read:user user:email
# 通过 GitHub API 获取用户基本信息
OIDC_USERINFO_URI=https://api.github.com/user
OIDC_USERNAME_CLAIM=name
# 让登录界面显示为“使用 GitHub 继续”
OIDC_DISPLAY_NAME=GitHub
实现的思路
- Outline 支持通过 OIDC 完成用户身份验证与登录
- OIDC 是建立在 OAuth 2.0 之上的一个身份层,其中约定了一个通过 OAuth 2.0 进行身份验证的 UserInfo Endpoint,客户端可以请求这个 Endpoint 来获得用户的一些基本信息。
- GitHub 支持第三方 APP 通过 OAuth 2.0 接入
虽然 GitHub 没有提供符合 OIDC 实现的 UserInfo Endpoint 来读取用户的基本信息,但幸运的是通过合适的配置(OIDC_USERINFO_URI
, OIDC_SCOPES
以及 OIDC_USERNAME_CLAIM
),可以让 Outline 通过 GitHub 提供的 /user API 等效地完成用户基本信息的获取。
如果配置正确,点击 Outline 首页的 使用 GitHub 继续
按钮后,应该看到如图所示的授权页面,授权完成后将重定向回 Outline 并且为已登录状态。
评论列表 (0条):
加载更多评论 Loading...