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

> TinyAuth是一个轻量级的Go语言认证中间件，只需配置环境变量即可为任何Web应用添加登录保护。本文介绍其支持的认证方式（用户名密码、OAuth、LDAP）、兼容的代理服务器（Traefik、Nginx、Caddy）以及5分钟快速部署流程

- Canonical: https://www.zeroxin.xin/2025/11/09/tinyauth-introduction/
- Published: 2025-11-09T09:00:00+08:00
- Updated: 2026-06-18T17:17:25+08:00
- Categories: 网络技术
- Tags: 开源项目, 认证, 中间件, OAuth

在当今数字化时代，应用程序的安全性变得越来越重要。无论是个人自建的服务还是企业应用，都需要适当的身份验证机制来保护敏感数据。但是，传统的认证系统往往配置复杂、部署困难。今天，我要向大家介绍一个名为 **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** - 多服务编排
- **原生二进制** - 直接运行可执行文件

## 快速开始

### 在线演示
在深入了解之前，你可以先体验一下在线演示：
- **地址**: [demo.tinyauth.app](https://demo.tinyauth.app/)
- **用户名**: `user`
- **密码**: `password`

### Docker 部署示例

```yaml
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 创建用户：

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

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

## 配置选项

### 基础环境变量

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

### OAuth 配置

```bash
# 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 配置

```bash
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设备的管理界面提供简单的身份验证，增强安全性。

## 社区与支持

### 官方资源
- **官网**: [tinyauth.app](https://tinyauth.app/)
- **文档**: [tinyauth.app/docs](https://tinyauth.app/docs/)
- **GitHub**: [steveiliop56/tinyauth](https://github.com/steveiliop56/tinyauth)

### 社区支持
- **Discord**: [官方Discord服务器](https://discord.gg/eHzVaCzRRd) - 活跃的社区讨论
- **社区教程**: Jim's Garage 提供了详细的使用教程
- **贡献指南**: 欢迎各种形式的贡献，包括代码、文档、翻译等

### 国际化支持
TinyAuth 支持多种语言，包括：
- 英语（默认）
- 芬兰语
- 中文
- 其他语言正在持续添加中

## 版本更新与维护

### 最新版本
- **当前版本**: v4.0.1
- **更新频率**: 活跃开发，频繁更新
- **版本管理**: 提供详细的变更日志

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

## 优缺点分析

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

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

## 总结

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

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

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

---

**参考资料**:
- [TinyAuth 官方文档](https://tinyauth.app/docs)
- [GitHub 仓库](https://github.com/steveiliop56/tinyauth)
- [在线演示](https://demo.tinyauth.app/)
- [Docker Hub 镜像](https://hub.docker.com/r/steveiliop56/tinyauth)

