Files
egutierrez 47fac22230 chore: auto-commit (799 archivos)
- .claude/CLAUDE.md
- .claude/commands/subagentes.md
- .claude/rules/INDEX.md
- .mcp.json
- bash/functions/cybersecurity/analyze_dns.md
- bash/functions/cybersecurity/audit_http_headers.md
- bash/functions/cybersecurity/audit_ssh_config.md
- bash/functions/cybersecurity/check_firewall.md
- bash/functions/cybersecurity/detect_suspicious_users.md
- bash/functions/cybersecurity/encrypt_file.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 00:28:20 +02:00

2.2 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
jwt_middleware function go infra 1.0.0 impure func JWTMiddleware(secret string) Middleware Middleware HTTP que extrae el JWT del header Authorization: Bearer y valida con JWTValidate. Inyecta las claims en el context del request (recuperables con JWTClaimsFromContext). Responde 401 si falta el header, formato incorrecto o token invalido.
jwt
auth
middleware
http
server
infra
pendiente-usar
jwt_validate_go_infra
http_error_response_go_infra
JWTClaims_go_infra
Middleware_go_infra
HTTPError_go_infra
Middleware_go_infra
false error_go_core
context
net/http
strings
name desc
secret clave HMAC para JWTValidate. Debe ser la misma usada en JWTGenerate
Middleware que protege handlers con validacion JWT. Las claims se inyectan en r.Context() con una key privada true
pasa con token valido
401 sin header Authorization
401 con formato distinto de Bearer
401 con token invalido
claims accesibles via JWTClaimsFromContext
functions/infra/jwt_middleware_test.go functions/infra/jwt_middleware.go

Ejemplo

protected := HTTPMiddlewareChain(
    HTTPLoggerMiddleware(os.Stderr),
    JWTMiddleware(os.Getenv("JWT_SECRET")),
)
mux.Handle("GET /api/me", protected(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    claims, _ := JWTClaimsFromContext(r.Context())
    HTTPJSONResponse(w, 200, map[string]string{"user_id": claims.Subject})
})))

Notas

Impura — lee headers y modifica el request. Expone el helper JWTClaimsFromContext(ctx) que devuelve (JWTClaims, bool) — el bool permite distinguir "no autenticado" de "subject vacio". Usa context.WithValue con una key de tipo privado jwtCtxKey struct{} para evitar colisiones con otros middlewares. Solo soporta cabecera Authorization: Bearer; para leer token desde cookie se crearia un middleware separado. En las respuestas 401 no se da detalle del motivo (token expirado vs firma invalida) para no filtrar informacion, el motivo real esta en los logs si se compone con HTTPLoggerMiddleware.