JWT: подпись и проверка claims (например, golang-jwt/jwt). После логина выдают токен, клиент шлет в Authorization: Bearer
token, err := jwt.ParseWithClaims(bearer, &claims, keyFunc)
if err != nil || !token.Valid { http.Error(w, "Unauthorized", 401); return }
r = r.WithContext(context.WithValue(r.Context(), "user", claims.Subject))