Repository navigation
v0.0.1 - Initial gRPC Authentication Proxy
Release v0.0.1
Initial Release
This is the first release of the gRPC Authentication Proxy, a simple Go-based proxy that adds JWT authentication headers to gRPC requests.
Features
- ✅ JWT Header Injection: Automatically adds
Authorization: Bearer <token>headers to all gRPC requests - ✅ Multi-Endpoint Support: Configure multiple endpoints in a single YAML file
- ✅ gRPC Reflection: Full support for gRPC reflection and service discovery
- ✅ Streaming Support: Preserves all gRPC semantics including bidirectional streaming
- ✅ Perfect Trailer Handling: Native Go gRPC support ensures proper trailer forwarding
- ✅ Easy Configuration: Simple YAML configuration with automatic validation
Use Cases
- Hermes Relayer: Add authentication to gRPC endpoints that Hermes cannot authenticate with
- gRPC Tools: Use with grpcurl, buf, or any gRPC client that needs authentication
- Development: Test authenticated gRPC services locally without modifying client code
Quick Start
# Download and extract the binary
wget https://github.com/chalabi2/chandra-grpc-proxy/releases/download/v0.0.1/grpc-auth-proxy-linux-amd64
chmod +x grpc-auth-proxy-linux-amd64
# Or build from source
git clone https://github.com/chalabi2/chandra-grpc-proxy.git
cd chandra-grpc-proxy
make build
# Configure
cp config.example.yaml config.yaml
# Edit config.yaml with your JWT tokens
# Run
make runConfiguration Example
endpoints:
- name: "cosmos-hub"
local_port: 9090
remote_address: "cosmos-grpc-api.chandrastation.com:443"
use_tls: true
jwt_token: "your_jwt_token_here"Testing
# Test reflection
grpcurl -plaintext localhost:9090 list
# Test actual calls
grpcurl -plaintext -d '{}' localhost:9090 cosmos.base.tendermint.v1beta1.Service/GetNodeInfoTechnical Details
- Language: Go 1.21+
- Dependencies: Minimal (gRPC, YAML parser, testify for tests)
- Architecture: Transparent proxy using gRPC's
UnknownServiceHandler - Performance: Low latency, handles concurrent connections efficiently
- Security: JWT tokens stored in gitignored config file
What's Fixed
This release solves the gRPC trailer handling issues that were present in earlier Rust implementations, providing a stable and reliable proxy for production use.
Known Issues
None at this time.