---
title: 外部认证委托 (Forward Authentication)
created: 2025-04-15
updated: 2026-05-01
type: concept
tags: []
sources: []
---

# 外部认证委托 (Forward Authentication)

**将认证决策委托给外部服务的架构模式**，反向代理作为认证网关，实际鉴权逻辑由独立服务处理。

## 工作原理

```
Client → Caddy (forward_auth) → Auth Service (返回 200/401)
                │                       │
                │   200 OK: 放行       │
                │   401/403: 拒绝      │
                ▼                       │
           Backend Service ←────────────┘
```

[[caddy-web-server|Caddy]] 的 `forward_auth` 指令将请求的特定头（如 `Authorization`、`X-API-Key`）转发给外部认证服务，根据返回状态码决定是否放行。

## Caddy 配置示例

```caddy
api.example.com {
    forward_auth localhost:9000 {
        uri /auth
        copy_headers Authorization X-API-Key
    }
    reverse_proxy localhost:8080
}
```

## 适用场景

- 认证逻辑涉及数据库查询、多因素验证
- 需要对接已有的用户认证系统（LDAP、OAuth）
- 认证策略频繁变更，不希望修改网关配置
- 多网关共享同一认证服务

## 与 API Key 认证的区别

| 特性 | [[api-key-authentication|API Key]] | Forward Auth |
|------|---------|-------------|
| 复杂度 | 极低 | 中等 |
| 依赖 | 无外部服务 | 需认证服务 |
| 灵活性 | 固定 Key 比对 | 任意复杂逻辑 |
| 延迟 | 亚毫秒 | 取决于外部服务 |

## 相关概念

- [[api-key-authentication]] — 简单 Key 认证（对比方案）
- [[reverse-proxy-authentication]] — 反向代理认证全景
- [[caddy-web-server]] — Caddy 实现
- [[caddy-reverse-proxy-auth]] — 完整配置指南
