Add optional API key auth and rate limiting for REST API

- api_key param: requires 'Authorization: Bearer <key>' header
- rate_limit_rpm param: per-IP sliding-window rate limit (requests/min)
- Both are off by default (backward compatible)
- CLI flags: --api_key, --rate_limit_rpm
- Added 5 unit tests for auth and rate limiting
This commit is contained in:
Aaron Boxer
2026-04-17 09:37:06 -04:00
committed by Aaron Boxer
parent e86d98dd80
commit b648bcb2a4
3 changed files with 133 additions and 1 deletions
+15
View File
@@ -96,6 +96,19 @@ if __name__ == "__main__":
default=0,
help='Port for Prometheus /metrics endpoint. 0 = disabled (default). Requires prometheus_client.'
)
parser.add_argument(
'--api_key',
type=str,
default=None,
help='Optional API key for authenticating REST API requests. '
'Clients must send "Authorization: Bearer <key>" header.'
)
parser.add_argument(
'--rate_limit_rpm',
type=int,
default=0,
help='Maximum REST API requests per minute per client IP. 0 = unlimited (default).'
)
args = parser.parse_args()
if args.backend == "tensorrt":
@@ -127,4 +140,6 @@ if __name__ == "__main__":
batch_window_ms=args.batch_window_ms,
raw_pcm_input=args.raw_pcm_input,
metrics_port=args.metrics_port,
api_key=args.api_key,
rate_limit_rpm=args.rate_limit_rpm,
)