aayushi-gupta56/smart-auth-service
GitHub: aayushi-gupta56/smart-auth-service
一个生产级的智能认证服务,使用 JWT、OAuth2 与异步 GenAI 异常检测解决高安全场景下的身份验证与风险识别问题。
Stars: 0 | Forks: 0
## 智能认证服务
生产级认证服务,支持 **RS256 JWT**、**OAuth2(Google/GitHub)**、**Redis 支撑的速率限制** 以及 **异步 GenAI 异常检测**(OpenAI + Bull + 断路器 + 缓存)。
### 架构(高级)
```
Client -> Express API
- /auth/login issues JWT (fast path)
- emits LoginEvent -> Bull queue
Worker -> Bull processor
- loads history (Postgres)
- GenAI classify (OpenAI) with circuit breaker
- fallback rules if GenAI unavailable
- cache result 24h (Redis)
- persist flags (Postgres)
Observability:
- JSON logs (pino)
- /health/metrics (Prometheus)
```
### 本地环境搭建
- **前置条件**:Docker Desktop + Node 22+
- 复制环境配置:
- `cp .env.example .env`
- 生成 JWT 密钥(PEM)并粘贴到 `.env`:
```
openssl genpkey -algorithm RSA -out jwt_private.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in jwt_private.pem -out jwt_public.pem
```
### 运行(Docker)
```
docker compose -f docker/docker-compose.yml up --build
```
随后:
- API:`http://localhost:3000`
- 健康检查:`GET /health/live`、`GET /health/ready`
- 指标:`GET /health/metrics`
### 数据库迁移
```
npm i
npm run build
npm run migrate:up
```
### 测试
- 单元测试:`npm run test:unit`
- 集成测试(需要本地 Postgres + Redis):`npm run test:integration`
### GenAI 细节(延迟与成本)
- OpenAI 调用为 **异步**(工作路径)。API 登录路径保持快速,并在降级时优雅处理。
- 重复失败后断路器会打开;基于规则的检测仍保持活跃。
- 缓存 TTL 默认按每次登录事件设置为 **24 小时**。
### 本地 LLM(Ollama)选项
你可以使用一个免费的本地模型,通过 OpenAI 兼容端点进行调用。
1. 安装并运行 Ollama,然后拉取模型:
```
ollama pull llama3.1:8b
```
2. 在 `.env` 中设置以下项:
```
OPENAI_API_KEY=dummy
OPENAI_BASE_URL=http://host.docker.internal:11434/v1
OPENAI_MODEL=llama3.1:8b
OPENAI_TIMEOUT_MS=10000
```
`OPENAI_BASE_URL` 为可选项;未设置时将使用默认的 OpenAI API。
标签:24小时缓存, API 网关, API集成, Bull, Docker, Express, GenAI, GitHub 登录, GNU通用公共许可证, Google 登录, JSON 日志, JWT, MITM代理, Node.js, OAuth 2.0, OpenAI, PEM, Pino, Postgres, Redis, RS256, SSO, TypeScript, 事件驱动, 云计算, 健康检查, 内存规避, 可观测性, 安全插件, 安全防御评估, 密钥生成, 异常检测, 异步工作, 搜索引擎查询, 本地开发, 注册, 生产环境, 电路断路器, 登录, 登录锁定, 缓存, 自动化攻击, 规则引擎, 认证服务, 队列, 降级规则