pub struct SignedUrlConfig {
pub enabled: bool,
pub secret: Option<String>,
pub ttl_seconds: u64,
pub query_param: String,
pub require_nonce: bool,
pub nonce_param: String,
pub bind_client_ip: bool,
}Expand description
Signed URL configuration (DW-109, routes[].signed_url).
When enabled, the gateway verifies that each request to the route carries a valid HMAC-SHA256 signature in its query string. The signature is computed over the canonical request (method, path, expires timestamp) using the configured secret.
Fields§
§enabled: boolWhether signed URL verification is enabled on this route.
secret: Option<String>The HMAC secret (shared between the URL minter and the
gateway). Must be non-empty when enabled is true. Stored
as a plain string; in production, use a ${...} secret
reference (DW-045) so the secret is not in the config file.
ttl_seconds: u64The signature validity window in seconds. A URL minted at
time T is valid until T + ttl_seconds. Must be > 0.
Default: 300 (5 minutes).
query_param: StringThe query parameter name carrying the hex-encoded signature.
Must be non-empty. Default: sig.
require_nonce: boolRequire a one-time nonce (SEC-07, #211): when true, each
signed URL must carry a nonce query parameter, and the
verifier rejects replayed nonces within the validity window.
Default: false (backward compatible).
nonce_param: StringThe query parameter name carrying the one-time nonce.
Must be non-empty when require_nonce is true.
Default: nonce.
bind_client_ip: boolBind the signature to the client’s IP address (SEC-07, #211): when true, the canonical request includes the client IP as a fourth line, so a signed URL minted for one client cannot be replayed from a different IP. Default: false.
Trait Implementations§
Source§impl Clone for SignedUrlConfig
impl Clone for SignedUrlConfig
Source§fn clone(&self) -> SignedUrlConfig
fn clone(&self) -> SignedUrlConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SignedUrlConfig
impl Debug for SignedUrlConfig
Source§impl<'de> Deserialize<'de> for SignedUrlConfig
impl<'de> Deserialize<'de> for SignedUrlConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for SignedUrlConfig
impl JsonSchema for SignedUrlConfig
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl PartialEq for SignedUrlConfig
impl PartialEq for SignedUrlConfig
Source§impl Serialize for SignedUrlConfig
impl Serialize for SignedUrlConfig
impl StructuralPartialEq for SignedUrlConfig
Auto Trait Implementations§
impl Freeze for SignedUrlConfig
impl RefUnwindSafe for SignedUrlConfig
impl Send for SignedUrlConfig
impl Sync for SignedUrlConfig
impl Unpin for SignedUrlConfig
impl UnwindSafe for SignedUrlConfig
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more