pub struct ClusterJoinClaims {
pub api_endpoint: String,
pub raft_endpoint: String,
pub leader_wg_pubkey: String,
pub overlay_cidr: String,
pub exp: String,
pub iat: String,
pub iss: String,
}Expand description
Claims carried inside a signed cluster join token.
Field declaration order is the canonical signing order. Do NOT
reorder these fields without bumping the envelope’s v and writing
a migration — Wave 3.2’s mint_signed_cluster_join_token signs
serde_json::to_vec(&claims) directly, which depends on the
declaration order being stable.
Timestamps are RFC3339 strings (not Unix epoch) so a token printed
to a wiki or chat log is human-readable. chrono::DateTime<Utc> would
also work; we chose String to keep the wire format trivially
inspectable with base64 -d | jq ..
Fields§
§api_endpoint: StringPublic API endpoint of the issuing leader (e.g. https://leader.prod:3669).
raft_endpoint: StringRaft endpoint of the issuing leader (e.g. 10.0.0.1:3670).
leader_wg_pubkey: StringWireGuard public key of the issuing leader (base64 standard, no-pad).
overlay_cidr: StringOverlay CIDR the cluster owns (e.g. 10.42.0.0/16).
exp: StringExpiration as RFC3339, e.g. 2026-05-15T17:55:00Z.
iat: StringIssued-at as RFC3339.
iss: StringIssuing leader node identity. In Wave 3 this is the raw node UUID;
Wave 9 will switch this to a spiffe://<cluster_domain>/<node_id> URI
(token format version bump). Verifiers in Wave 3 treat iss as opaque
metadata — no parsing required.
Trait Implementations§
Source§impl Clone for ClusterJoinClaims
impl Clone for ClusterJoinClaims
Source§fn clone(&self) -> ClusterJoinClaims
fn clone(&self) -> ClusterJoinClaims
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more