systemprompt_models/profile/
security.rs1use std::path::PathBuf;
8
9use crate::auth::JwtAudience;
10use serde::{Deserialize, Serialize};
11
12pub const GATEWAY_REQUIRED_RESOURCE_AUDIENCES: &[&str] = &["hook"];
23
24#[must_use]
30pub fn default_resource_audiences() -> Vec<String> {
31 GATEWAY_REQUIRED_RESOURCE_AUDIENCES
32 .iter()
33 .map(|aud| (*aud).to_owned())
34 .collect()
35}
36
37const fn default_allow_registration() -> bool {
38 true
39}
40
41fn default_signing_key_path() -> PathBuf {
42 PathBuf::from("signing_key.pem")
43}
44
45pub const DEFAULT_ID_JAG_TTL_SECS: i64 = 300;
48
49const fn default_id_jag_ttl_secs() -> i64 {
50 DEFAULT_ID_JAG_TTL_SECS
51}
52
53#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
54#[serde(deny_unknown_fields)]
55pub struct SecurityConfig {
56 #[serde(rename = "jwt_issuer")]
57 pub issuer: String,
58
59 #[serde(rename = "jwt_access_token_expiration")]
60 pub access_token_expiration: i64,
61
62 #[serde(rename = "jwt_refresh_token_expiration")]
63 pub refresh_token_expiration: i64,
64
65 #[serde(rename = "jwt_audiences")]
66 pub audiences: Vec<JwtAudience>,
67
68 #[serde(default)]
69 pub allowed_resource_audiences: Vec<String>,
70
71 #[serde(default = "default_allow_registration")]
72 pub allow_registration: bool,
73
74 #[serde(default = "default_signing_key_path")]
75 pub signing_key_path: PathBuf,
76
77 #[serde(default, skip_serializing_if = "Vec::is_empty")]
78 pub trusted_issuers: Vec<TrustedIssuer>,
79
80 #[serde(default = "default_id_jag_ttl_secs")]
81 pub id_jag_ttl_secs: i64,
82}
83
84#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, schemars::JsonSchema)]
90#[serde(deny_unknown_fields)]
91pub struct TrustedIssuer {
92 pub issuer: String,
93 pub jwks_uri: String,
94 pub audience: String,
95
96 #[serde(default, skip_serializing_if = "Vec::is_empty")]
98 pub typ_allowlist: Vec<String>,
99
100 #[serde(default, skip_serializing_if = "Vec::is_empty")]
103 pub allowed_client_ids: Vec<String>,
104
105 #[serde(default)]
107 pub can_issue_id_jag: bool,
108}