agentguard_auth/
error.rs

1//! Error types for agentguard-auth.
2
3use thiserror::Error;
4
5/// Result alias for agentguard-auth fallible operations.
6pub type Result<T> = std::result::Result<T, AuthError>;
7
8#[derive(Debug, Error)]
9#[non_exhaustive]
10pub enum AuthError {
11    #[error("jwt invalid: {0}")]
12    JwtInvalid(String),
13    #[error("jwt expired")]
14    JwtExpired,
15    #[error("jwt audience mismatch: expected {expected}, got {actual}")]
16    JwtAudienceMismatch { expected: String, actual: String },
17    #[error("jwt issuer mismatch: expected {expected}, got {actual}")]
18    JwtIssuerMismatch { expected: String, actual: String },
19    #[error("jwt unknown key id: {0}")]
20    JwtUnknownKid(String),
21    #[error("oidc discovery failed: {0}")]
22    OidcDiscovery(String),
23    #[error("jwks fetch failed: {0}")]
24    JwksFetch(String),
25    #[error("dpop invalid: {0}")]
26    DpopInvalid(String),
27    #[error("dpop htu mismatch: expected {expected}, got {actual}")]
28    DpopHtuMismatch { expected: String, actual: String },
29    #[error("dpop replay detected (jti={0})")]
30    DpopReplay(String),
31    #[error("dpop replay tracker capacity exceeded")]
32    DpopCapacityExceeded,
33    #[error("spiffe fetch failed: {0}")]
34    SpiffeFetch(String),
35    #[error("spiffe identity expired")]
36    SpiffeExpired,
37    #[error("api key invalid")]
38    ApiKeyInvalid,
39    #[error("api key expired")]
40    ApiKeyExpired,
41    #[error("api key revoked")]
42    ApiKeyRevoked,
43    #[error("clock error: {0}")]
44    Clock(String),
45    #[error("other: {0}")]
46    Other(String),
47}