Max P. 4326a2d92c fix(auth): validate API key from POST body and handle content type
- Switch API key validation to use POST body parameters
- Add support for `application/x-www-form-urlencoded` content type
- Store parsed body in context state for further use
- Reject unsupported content types with 415 status
2025-05-11 10:59:39 +02:00
2025-05-11 01:16:51 +02:00

lt-auth-proxy

A lightweight, production-ready reverse proxy for LanguageTool with API key authentication.

This service acts as a transparent gateway that verifies an apiKey before forwarding requests to a running LanguageTool server instance. It is fully self-contained, built in Deno, and distributed as a minimal multi-architecture Docker image.


Features

  • 🔐 API key authentication via query or form body
  • 📡 Transparent proxying to any LanguageTool backend
  • 🐳 Minimal Docker image (~93 MB)
  • 🧱 Statically compiled Deno binary
  • 🧪 Unit tested middleware and proxy logic
  • 🛠️ Compatible with regular LT clients

🚀 Usage

You can run the proxy via Docker:

docker run -p 8011:8011 \
  -e API_KEYS="demo-key,another-key" \
  -e LT_SERVER_HOST=lt-server \
  -e LT_SERVER_PORT=8010 \
  git.0xmax42.io/simdev/lt-auth-proxy:latest

🧪 Supported Environment Variables

Variable Required Default Description
API_KEYS yes Comma-separated list of valid API tokens
PROXY_HOST no 0.0.0.0 Host/IP address to bind the proxy to
PROXY_PORT no 8011 Port the proxy listens on
LT_SERVER_HOST no localhost Hostname of the LanguageTool backend
LT_SERVER_PORT no 8010 Port of the LanguageTool backend

📁 File Structure

src/
├── main.ts          # Entry point, sets up the HTTP kernel
├── env.ts           # Lazy-loaded environment access
├── ltProxyAuth.ts   # Middleware to check the apiKey
├── ltProxyHandler.ts# Handler to forward the request to LT

🐳 Docker Compose Example

services:
  lt-server:
    image: languagetool/languagetool:latest
    ports:
      - "8010:8010"

  proxy:
    image: git.0xmax42.io/maxp/lt-auth-proxy:latest
    ports:
      - "8011:8011"
    environment:
      - API_KEYS=demo-key
      - LT_SERVER_HOST=lt-server
      - LT_SERVER_PORT=8010

📖 License

MIT © 0xMax42 https://git.0xmax42.io/maxp/lt-auth-proxy

Description
Language Tool authentication proxy
Readme MIT 110 KiB
2025-05-11 16:10:39 +02:00
Languages
TypeScript 77.8%
Shell 13.2%
Dockerfile 9%