Skip to content
Clone
d5939db
37 lines 1.3 KB Rust
use serde::{Deserialize, Serialize};
use time::Duration;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct JwtSettings {
/// ID of the signing key used to issue tokens (kid).
pub issuer: String,
/// Audience claim that access tokens must carry.
pub audience: String,
/// Access token lifetime, e.g. "15m".
pub access_ttl: Duration,
/// Refresh token lifetime, e.g. "30d".
pub refresh_ttl: Duration,
/// Grace window during which a rotated refresh token is still accepted.
pub grace_window: Duration,
/// Clock skew tolerance when validating exp / nbf.
pub clock_skew_seconds: i64,
/// Default grace duration for a rotated signing key.
pub default_grace_duration: Duration,
/// Signature algorithm used for new keys.
pub default_key_pair_algorithm: String,
}
impl Default for JwtSettings {
fn default() -> Self {
Self {
issuer: "untitled".to_string(),
audience: "untitled-api".to_string(),
access_ttl: Duration::minutes(15),
refresh_ttl: Duration::days(30),
grace_window: Duration::minutes(5),
clock_skew_seconds: 60,
default_grace_duration: Duration::days(7),
default_key_pair_algorithm: "EdDSA".to_string(),
}
}
}