Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands - CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround - CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check - NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere - MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates - LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference Co-authored-by: Cursor <cursoragent@cursor.com>
4.5 KiB
4.5 KiB
ChainID 138 JWT Authentication Requirements
Last Updated: 2026-01-31
Document Version: 1.0
Status: Active Documentation
Date: December 26, 2024
Status: All RPC containers require JWT authentication
Overview
All RPC containers for ChainID 138 require JWT authentication via nginx reverse proxy. This ensures secure, permissioned access to the Besu RPC endpoints.
Container Allocation with JWT Auth
Ali's Containers (Full Access)
| VMID | Hostname | Role | Identity | IP Address | JWT Auth |
|---|---|---|---|---|---|
| 1504 | besu-sentry-5 |
Besu Sentry | N/A | 192.168.11.154 | ✅ Required |
| 2503 | besu-rpc-4 |
Besu RPC | 0x8a | 192.168.11.253 | ✅ Required |
| 2504 | besu-rpc-4 |
Besu RPC | 0x1 | 192.168.11.254 | ✅ Required |
| 6201 | firefly-2 |
Firefly | N/A | 192.168.11.67 | ✅ Required |
Access Level: Full root access to all containers
Luis's Containers (RPC-Only Access)
| VMID | Hostname | Role | Identity | IP Address | JWT Auth |
|---|---|---|---|---|---|
| 2505 | besu-rpc-luis |
Besu RPC | 0x8a | 192.168.11.255 | ✅ Required |
| 2506 | besu-rpc-luis |
Besu RPC | 0x1 | 192.168.11.202 | ✅ Required |
Access Level: RPC-only access via JWT authentication
- No Proxmox console access
- No SSH access
- No key material access
- Access via reverse proxy / firewall-restricted RPC ports
Putu's Containers (RPC-Only Access)
| VMID | Hostname | Role | Identity | IP Address | JWT Auth |
|---|---|---|---|---|---|
| 2507 | besu-rpc-putu |
Besu RPC | 0x8a | 192.168.11.203 | ✅ Required |
| 2508 | besu-rpc-putu |
Besu RPC | 0x1 | 192.168.11.204 | ✅ Required |
Access Level: RPC-only access via JWT authentication
- No Proxmox console access
- No SSH access
- No key material access
- Access via reverse proxy / firewall-restricted RPC ports
JWT Authentication Setup
Requirements
- Nginx Reverse Proxy - All RPC containers must be behind nginx
- JWT Validation - All requests must include valid JWT token
- Identity Mapping - JWT tokens must map to permissioned identities (0x8a, 0x1)
- Access Control - Different JWT tokens for different operators
Implementation
For Ali's Containers (2503, 2504)
- Full access JWT token
- Can access both 0x8a and 0x1 identities
- Admin-level permissions
For Luis's Containers (2505, 2506)
- RPC-only JWT token
- Can access 0x8a identity (2505)
- Can access 0x1 identity (2506)
- Limited to RPC endpoints only
For Putu's Containers (2507, 2508)
- RPC-only JWT token
- Can access 0x8a identity (2507)
- Can access 0x1 identity (2508)
- Limited to RPC endpoints only
Nginx Configuration
Example Configuration
Each RPC container should have nginx configuration with:
location / {
auth_jwt "RPC Access" token=$cookie_auth_token;
auth_jwt_key_file /etc/nginx/jwt/rs256.pub;
proxy_pass http://192.168.11.XXX:8545;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
JWT Token Requirements
- Algorithm: RS256 (recommended) or HS256
- Claims: Must include operator identity and permissioned account
- Expiration: Set appropriate expiration times
- Validation: Validate on every request
Deployment Checklist
For Each RPC Container (2503-2508)
- Create LXC container
- Configure Besu with permissioned identity
- Set up nginx reverse proxy
- Configure JWT authentication
- Generate JWT tokens for operators
- Test JWT validation
- Configure firewall rules
- Disable discovery (prevents connection to Ethereum mainnet while reporting chainID 0x1 to MetaMask for wallet compatibility)
- Deploy static-nodes.json and permissioned-nodes.json
Security Considerations
- Token Storage: JWT tokens should be stored securely
- Token Rotation: Implement token rotation policy
- Access Logging: Log all RPC access attempts
- Rate Limiting: Implement rate limiting per operator
- Network Isolation: Use firewall rules to restrict access
Related Documentation
- Missing Containers List
- ChainID 138 Configuration Guide
- Access Control Model
- Nginx JWT Auth – JWT setup and scripts
Last Updated: December 26, 2024
Status: ✅ Requirements Documented