TinyAuth - 简单易用的应用认证中间件


TinyAuth - 简单易用的应用认证中间件

在当今数字化时代,应用程序的安全性变得越来越重要。无论是个人自建的服务还是企业应用,都需要适当的身份验证机制来保护敏感数据。但是,传统的认证系统往往配置复杂、部署困难。今天,我要向大家介绍一个名为 TinyAuth 的开源项目,它以极简的设计理念,为我们提供了最简单的应用保护方案。

项目简介

TinyAuth 是一个轻量级的身份验证中间件,由 Go 语言开发。它最大的特点就是简单 - 只需要环境变量配置,就能为你的应用添加登录保护。支持主流的代理服务器如 Traefik、Nginx 和 Caddy,让你可以轻松保护任何 Web 应用。

项目亮点

  • ⭐ 5.8k+ GitHub Stars - 社区认可度高
  • 📦 极简设计 - 单文件静态链接,无额外依赖
  • 🚀 快速部署 - 5分钟即可完成安装配置
  • 🔒 多重认证 - 支持用户名密码、OAuth、LDAP
  • 📱 现代化界面 - 响应式设计,支持深色模式

核心功能特性

1. 简单易用

TinyAuth 遵循"配置优于代码"的理念,通过环境变量即可完成所有配置。无需复杂的配置文件或数据库设置,开箱即用。

2. 轻量高效

  • 单个静态链接二进制文件
  • 内存占用极低
  • 启动速度快
  • 支持高并发

3. 灵活的认证方式

  • 用户名密码认证 - 最基础的认证方式
  • OAuth 支持 - 可集成 Google、GitHub 等第三方登录
  • LDAP 集成 - 支持企业级目录服务
  • TOTP 两步验证 - 提供额外的安全层

4. 强大的代理服务器支持

  • Traefik - 原生支持,自动集成
  • Nginx - 通过中间件配置
  • Caddy - 支持反向代理场景
  • Kubernetes - 提供 Helm Chart

5. 多域名支持

支持主域名cookies设置,让认证状态在所有子域名间共享,非常适合多应用场景。

技术架构

后端技术栈

  • Go (64.6%) - 高性能后端服务
  • SQLite - 轻量级数据库,用于会话存储
  • GORM - Go语言 ORM 框架

前端技术栈

  • TypeScript (32.1%) - 类型安全的前端开发
  • React - 现代化用户界面
  • 响应式设计 - 适配各种设备

部署方式

  • Docker - 容器化部署
  • Docker Compose - 多服务编排
  • 原生二进制 - 直接运行可执行文件

快速开始

在线演示

在深入了解之前,你可以先体验一下在线演示:

Docker 部署示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
version: '3.8'
services:
traefik:
image: traefik:v3.3
container_name: traefik
command: --api.insecure=true --providers.docker
restart: unless-stopped
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock

whoami:
image: traefik/whoami:latest
container_name: whoami
restart: unless-stopped
labels:
traefik.enable: true
traefik.http.routers.whoami.rule: Host(`whoami.example.com`)
traefik.http.routers.whoami.middlewares: tinyauth

tinyauth:
image: ghcr.io/steveiliop56/tinyauth:v4
container_name: tinyauth
restart: unless-stopped
environment:
- APP_URL=https://tinyauth.example.com
- USERS=user:$$2a$$10$$UdLYoJ5lgPsC0RKqYH/jMua7zIn0g9kPqWmhYayJYLaZQ/FTmH2/u
labels:
traefik.enable: true
traefik.http.routers.tinyauth.rule: Host(`tinyauth.example.com`)
traefik.http.middlewares.tinyauth.forwardauth.address: http://tinyauth:3000/api/auth/traefik

创建用户

使用 Docker CLI 创建用户:

1
docker run -i -t --rm ghcr.io/steveiliop56/tinyauth:v4 user create --interactive

这个命令会交互式地创建用户名和密码,并生成相应的配置。

配置选项

基础环境变量

变量名描述默认值
APP_URL应用程序的完整URL-
USERS用户配置(格式:用户名:bcrypt密码哈希)-
JWT_SECRETJWT签名密钥-
SESSION_TIMEOUT会话超时时间24h

OAuth 配置

1
2
3
4
5
6
7
# Google OAuth
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret

# GitHub OAuth
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret

LDAP 配置

1
2
3
4
LDAP_URL=ldap://your-ldap-server
LDAP_BASE_DN=dc=example,dc=com
LDAP_BIND_DN=cn=admin,dc=example,dc=com
LDAP_BIND_PASSWORD=your_bind_password

应用场景

1. 个人自建服务保护

如果你运行着各种个人服务(文件管理器、监控面板、开发工具等),TinyAuth可以快速为它们添加统一的认证保护。

2. 小团队内部工具

对于小团队来说,部署复杂的身份认证系统成本过高。TinyAuth提供了轻量级的解决方案。

3. 开发环境保护

在开发过程中,经常需要保护一些内部使用的工具和面板,避免意外暴露。

4. IoT 设备管理界面

为IoT设备的管理界面提供简单的身份验证,增强安全性。

社区与支持

官方资源

社区支持

  • Discord: 官方Discord服务器 - 活跃的社区讨论
  • 社区教程: Jim’s Garage 提供了详细的使用教程
  • 贡献指南: 欢迎各种形式的贡献,包括代码、文档、翻译等

国际化支持

TinyAuth 支持多种语言,包括:

  • 英语(默认)
  • 芬兰语
  • 中文
  • 其他语言正在持续添加中

版本更新与维护

最新版本

  • 当前版本: v4.0.1
  • 更新频率: 活跃开发,频繁更新
  • 版本管理: 提供详细的变更日志

安全性

  • 定期安全更新
  • 活跃的漏洞修复
  • 详细的安全策略文档
  • 依赖项安全扫描

优缺点分析

优点

极简配置 - 只需环境变量,无需复杂配置
轻量级 - 资源消耗极低,适合边缘设备
多代理支持 - 兼容主流代理服务器
现代化UI - 响应式设计,用户体验好
活跃社区 - 社区支持活跃,持续维护
多认证方式 - 支持本地、OAuth、LDAP等多种认证

限制

⚠️ 功能相对简单 - 不适合需要复杂权限管理的场景
⚠️ 单点故障 - 作为认证中心,需要保证高可用
⚠️ 域名要求 - 对域名配置有一定要求(需要使用子域名)

总结

TinyAuth 是一个设计精良的开源项目,它成功地将复杂的身份认证功能简化为几个环境变量的配置。无论是个人用户还是小团队,都能从中受益。

如果你正在寻找一个简单、轻量、易部署的身份认证解决方案,TinyAuth 绝对值得一试。它的开源特性、活跃的社区以及持续的维护更新,为用户提供了一个可靠的选择。

从 5.8k+ 的 GitHub Stars 和 178+ 的 forks 可以看出,TinyAuth 已经获得了广泛的社区认可。项目的持续活跃和频繁更新,也保证了其长期的可维护性。


参考资料:


文章作者: ZeroXin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ZeroXin !
  目录