Lazy loaded image
Lazy loaded imagenCalendar 单点登录之 Dex 入门篇
字数 1103阅读时长≈ 3 分钟
2025-5-31
type
status
date
slug
summary
category
tags
create_time
May 31, 2025 02:48 PM
icon
password
my_create_time

✨ 背景:nCalendar 迈向统一账户体系的第一步

根据 nCalendar 的产品规划,未来将支持 Notion 官方公共集成,从而替代手动复制 Token 的连接方式。
这意味着我们必须接入 OAuth 授权机制,才能与 Notion 等平台安全且规范地对接。
与此同时,nCalendar 也在持续扩展其他平台支持(如飞书、企业微信、GitHub 登录等),并计划为用户提供:
  • ✅ 更安全的身份验证方式(OAuth、扫码、免密登录)
  • ✅ 在不同服务中统一身份与权限管理
  • ✅ 便捷的跨设备登录体验
要实现这一切,我们亟需一个统一的身份认证网关。这正是 Dex 所能提供的核心价值。

🧠 什么是 Dex?

Dex 是一个开源的身份提供者(Identity Provider, IdP),基于 OpenID Connect(OIDC) 标准协议构建。
它的本质是一个“认证桥接器”,能够将各种下游身份系统(GitHub、Google、LDAP、SAML 等)统一封装成标准的 OIDC 接口,供前端或其他系统调用。
通过引入 Dex,nCalendar 不需要重复实现每一种第三方登录逻辑,而只需对接一次 OIDC 接口即可获得完整的认证能力。

🔄 Dex 的核心原理:认证聚合器

Dex 扮演的是“身份聚合器”的角色:
  1. 用户点击“使用 XXX 登录”
  1. nCalendar 重定向用户至 Dex 的认证入口
  1. Dex 根据配置,将请求转发至目标身份源(如 GitHub)
  1. 身份源完成认证后返回授权信息给 Dex
  1. Dex 封装标准 OIDC Token,并返回给 nCalendar
  1. nCalendar 使用 Token 获取用户信息,完成登录流程
✅ 整个过程安全、标准、可扩展,完全遵循 OAuth2 + OIDC 规范。
💡
这里我们是采用定制 Dex 的 connector,无需第1步和第2步。

🧩 Dex 支持哪些身份源(Connectors)?

Dex 拥有丰富的身份源适配能力,你可以通过配置启用以下认证方式:
类型
示例
用途
OAuth2 / OIDC
GitHub、Google、GitLab
常见的“第三方登录”方式
LDAP
企业 AD / OpenLDAP
企业内部员工账号系统
SAML
Azure AD、Okta
政府/大企业的 SSO 解决方案
静态账户
本地用户名密码
用于测试或演示环境
微信/飞书扫码(拓展)
搭配外部桥接服务使用
面向国内用户的便捷登录体验
这些连接器可以并存,Dex 会在登录页展示身份源选项,用户可自由选择。
PS:默认页面比较丑,最好是自己定制一套。

🔌 Dex 与 nCalendar 的关系图

notion image
  • nCalendar 前端 只需要知道如何与 Dex 对话(OIDC);
  • Dex 负责处理用户实际的认证行为;
  • 用户 无需理解技术细节,只需“输入用户名密码”即可登录,少去授权的一步。

🧱 为什么我们选择 Dex?

特性
说明
✅ 标准协议
支持 OAuth2 / OpenID Connect,无需自建协议
✅ 多源接入
同时支持 GitHub、LDAP、微信、企业认证等
✅ 无锁定
开源、轻量、可自托管,无需依赖商业服务(相比keycloak轻量太多了)
✅ 易集成
可容器化部署,前端通过 OIDC 即可接入
✅ 可扩展
未来可增加短信登录、扫码、二次验证等能力
💡
PS:正好几年前做 PaaS 平台的时候就用的是 Dex 对接各个平台组件和第三方组件,也算是熟悉一点。

🚀 面向未来的统一认证平台

使用 Dex 作为中间层,nCalendar 将拥有强大的认证体系基础,可快速实现:
  • ✅ Notion 官方集成所需的 OAuth 登录授权
  • ✅ GitHub 登录支持(面向开发者)
  • ✅ 飞书、企业微信扫码登录(面向企业团队)
  • ✅ 多端统一账号体系(Web、桌面、移动端)
最终目标是打造一个真正自动化、安全、无感登录的体验,无论用户从哪个入口接入,都能实现同一身份通行、一处登录、全域可用。

✅ 总结

Dex 是构建统一认证体系的重要基石,适用于所有希望实现 OAuth 登录、SSO 通行证、LDAP 集成的现代应用。在 nCalendar 中,它帮助我们以最低的开发成本、最高的灵活性实现多平台、跨服务的身份认证。
💡
它不只是“对接 GitHub 登录”这么简单,而是为未来的身份能力提供了一种 标准、开放、可扩展 的方案。
💡
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
若文章对您有帮助,欢迎 请我喝杯咖啡~
 
上一篇
nCalendar 单点登录之 Dex 全流程解析
下一篇
使用阿里云 SLS 统一管理 Docker 容器日志

评论
Loading...