mockforge_core/config/
auth.rs1use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8#[serde(default)]
9#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
10pub struct AuthConfig {
11 pub jwt: Option<JwtConfig>,
13 pub oauth2: Option<OAuth2Config>,
15 pub basic_auth: Option<BasicAuthConfig>,
17 pub api_key: Option<ApiKeyConfig>,
19 pub require_auth: bool,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize)]
25#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
26pub struct JwtConfig {
27 pub secret: Option<String>,
29 pub rsa_public_key: Option<String>,
31 pub ecdsa_public_key: Option<String>,
33 pub issuer: Option<String>,
35 pub audience: Option<String>,
37 pub algorithms: Vec<String>,
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize)]
43#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
44pub struct OAuth2Config {
45 pub client_id: String,
47 pub client_secret: String,
49 pub introspection_url: String,
51 pub auth_url: Option<String>,
53 pub token_url: Option<String>,
55 pub token_type_hint: Option<String>,
57}
58
59#[derive(Debug, Clone, Serialize, Deserialize)]
61#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
62pub struct BasicAuthConfig {
63 pub credentials: HashMap<String, String>,
65}
66
67#[derive(Debug, Clone, Serialize, Deserialize)]
69#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
70pub struct ApiKeyConfig {
71 pub header_name: String,
73 pub query_name: Option<String>,
75 pub keys: Vec<String>,
77}
78
79impl Default for AuthConfig {
80 fn default() -> Self {
81 Self {
82 jwt: None,
83 oauth2: None,
84 basic_auth: None,
85 api_key: Some(ApiKeyConfig {
86 header_name: "X-API-Key".to_string(),
87 query_name: None,
88 keys: vec![],
89 }),
90 require_auth: false,
91 }
92 }
93}