pub struct JwtSecretManager { /* private fields */ }Expand description
Manages the API daemon’s JWT signing secret.
Use JwtSecretManager::with_base_dir alongside KeyManager
during daemon startup so both keys live in the same directory.
Implementations§
Source§impl JwtSecretManager
impl JwtSecretManager
Sourcepub fn with_base_dir(base_dir: impl AsRef<Path>) -> Self
pub fn with_base_dir(base_dir: impl AsRef<Path>) -> Self
Creates a manager rooted at base_dir.
Sourcepub fn cluster_secret_file_path(&self) -> PathBuf
pub fn cluster_secret_file_path(&self) -> PathBuf
Returns the path to the cluster-wide JWT secret file.
This file holds the literal signing string the whole cluster shares
(propagated from the leader during a node join), as opposed to the
per-node random jwt_secret_{deployment}.key. When present, daemon
startup prefers it over get_or_create, so a session cookie minted on
any node validates cluster-wide.
Sourcepub fn load_cluster_secret(&self) -> Result<Option<SecretString>>
pub fn load_cluster_secret(&self) -> Result<Option<SecretString>>
Load the cluster-wide JWT secret if one was propagated to this node by the leader during a join.
Returns Ok(None) when the file is absent (the standalone / never-joined
case) so the caller can fall back to Self::get_or_create. The file
holds the secret verbatim (UTF-8, trailing newline tolerated).
§Errors
Returns SecretsError::Encryption if the file exists but cannot be
read or is empty.
Sourcepub fn import_cluster_secret(&self, secret: &str) -> Result<()>
pub fn import_cluster_secret(&self, secret: &str) -> Result<()>
Persist the cluster-wide JWT secret propagated by the leader, writing
the literal signing string to Self::cluster_secret_file_path with
mode 0600 on Unix.
Idempotent in effect: an existing file is overwritten with the leader-supplied value (the leader is the source of truth).
§Errors
Returns SecretsError::Encryption if secret is empty or the file
cannot be written.
Sourcepub fn get_or_create(&self, deployment: &str) -> Result<SecretString>
pub fn get_or_create(&self, deployment: &str) -> Result<SecretString>
Resolves the JWT secret, generating + persisting a fresh one when neither the env var nor a saved file is present.
§Errors
Returns SecretsError::Encryption if the file system cannot be
read or written, or if the loaded file is empty.
Trait Implementations§
Source§impl Clone for JwtSecretManager
impl Clone for JwtSecretManager
Source§fn clone(&self) -> JwtSecretManager
fn clone(&self) -> JwtSecretManager
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for JwtSecretManager
impl RefUnwindSafe for JwtSecretManager
impl Send for JwtSecretManager
impl Sync for JwtSecretManager
impl Unpin for JwtSecretManager
impl UnsafeUnpin for JwtSecretManager
impl UnwindSafe for JwtSecretManager
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§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,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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