编辑
2025-08-04
undefined
00
请注意,本文编写于 128 天前,最后修改于 122 天前,其中某些信息可能已经过时。

目录

项目笔记:Ark-Identity-System (A.I.S) - 基于 Authing 的身份认证集成SOP
第一部分:Authing 核心概念与选型
第二部分:Authing 平台配置
第三部分:与 Waline 前端的最终集成

项目笔记:Ark-Identity-System (A.I.S) - 基于 Authing 的身份认证集成SOP

第一部分:Authing 核心概念与选型

1.1 什么是 Authing?

  • Authing 是一个中心化的身份认证解决方案。它将复杂的“用户注册、登录、密码管理、社交登录集成、安全策略”等功能,全部打包成一个独立的云服务。
  • 类比: 它就像为你的所有应用(博客、未来的APP等)提供了一个统一的“鹰角网络通行证”系统。

1.2 为什么选择 Authing?

  • 国内优先: 服务器在国内,访问速度快,稳定性高,符合项目要求。

  • 功能全面: 免费版已提供足够强大的功能,包括社会化登录(GitHub)、自定义UI、安全策略等。

  • 解耦: 将用户身份管理从我们的 Waline 后端服务中剥离出来,实现了专业化分工。Waline 只负责评论,Authing 只负责身份,架构更清晰。

  • 强大的兼容性: 与 Waline 等现代应用有良好的集成支持。


第二部分:Authing 平台配置

2.1 创建用户池 (User Pool)

  • 操作: 登录 Authing 控制台 -> 创建用户池。

  • 关键选择: 选择 B2C (Business to Customer) 类型的用户池。B2E 适用于企业内部员工,不符合我们面向广大读者的场景。

  • 命名: 用户池命名为 arknights-blog-users。这个池子就是存放所有博客读者的独立“档案室”

    image-20250730174115324

2.2 创建自建应用

  • 操作: 在 arknights-blog-users 用户池下 -> 应用 -> 自建应用 -> 创建。
  • 作用: 这个“应用”是我们的 Waline 评论系统在 Authing 中的唯一身份。Waline 就是通过这个应用的 App ID 来和 Authing 对话的。
  • 关键信息提取: 在应用的“配置”页面,必须记录下以下两个核心参数:
    • App ID: 一长串唯一字符串。
    • 应用域名 (appDomain): 形如 your-app-domain.authing.cn
image-20250730174932144

2.3 配置登录回调 URL (最关键的安全配置)

  • 作用: 定义用户在 Authing 成功登录后,被允许安全跳转回的目标地址。如果目标地址不在此列表中,Authing会拒绝跳转。
  • 配置: 在“应用配置”->“登录回调 URL”中,添加所有可能的访问路径:
    • 线上生产域名: https://linuxnc.xyz
    • 线上 www 域名: https://www.linuxnc.xyz
    • 本地测试IP: http://10.0.0.55:4000
    • 本地测试域名: http://localhost:4000
image-20250730175049374

2.4 配置社会化登录 (以 GitHub 为例)

  • 目标: 让用户可以在 Authing 登录框中看到“使用 GitHub 登录”的按钮。
  • 双向配置流程:
    1. 在 Authing 端:
      • 进入 社会化身份源 -> 添加/配置 GitHub
      • Authing 会提供一个专用的**“回调地址”**,形如 https://core.authing.cn/connections/social/.../callback
      • 复制这个地址。
    2. 在 GitHub 端:
      • 登录 GitHub -> Settings -> Developer settings -> OAuth Apps -> New OAuth App。
      • 填写应用名称和主页URL。
      • 将从 Authing 复制的那个回调地址,精确地粘贴到 "Authorization callback URL" 输入框中。
      • 创建应用,获取 Client IDClient Secret
    3. 回到 Authing 端:
      • 将从 GitHub 获取的 Client IDClient Secret 填回到 Authing 的 GitHub 身份源配置页面。
      • 设置 Scopes (授权范围):只保留最核心的 user:emailread:user 权限,避免过度索权。
      • 关联应用: 在该身份源的“应用连接”中,开启你的博客应用

第三部分:与 Waline 前端的最终集成

这一步是在博客主题的配置文件 _config.butterfly.yml 中,告诉 Waline 前端如何与我们配置好的 Authing 服务进行交互。

3.1 核心配置 (_config.butterfly.yml -> waline.option)

yaml
option: # 1. 允许游客评论,同时提供登录选项 login: false requiredMeta: ['nick', 'mail'] avatar: 'qq' # 2. [关键] 定义 Authing 为第三方登录提供商 provider: - name: Authing # 填入从 Authing 应用配置中获取的信息 appId: '你的Authing应用的AppID' appDomain: '你的Authing应用域名' # (可选) 定义你希望请求的用户信息 scope: 'openid profile email phone'

3.2 用户体验流程

  • 未登录用户看到评论框和昵称/邮箱输入框。
  • 点击“登录”按钮。
  • Waline 前端脚本读取 provider 配置,将页面重定向到 Authing 的托管登录页。
  • 用户在 Authing 页面选择 GitHub 登录,授权后,被 Authing 安全地重定向回博客的评论区。
  • Waline 脚本拿到 Authing 返回的凭证,完成登录,评论框切换到“已登录”状态。

本文作者:张龙龙

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!