tower_oauth2_resource_server/
validation.rs

1use std::fmt::Display;
2
3#[derive(Clone, Debug, Default, Eq, PartialEq)]
4pub struct ClaimsValidationSpec {
5    pub iss: Option<String>,
6    pub exp: bool,
7    pub nbf: bool,
8    pub aud: Vec<String>,
9    pub validate_aud: bool,
10}
11
12impl ClaimsValidationSpec {
13    pub fn new() -> Self {
14        Self {
15            validate_aud: true,
16            ..Default::default()
17        }
18    }
19
20    pub fn recommended(issuer: &str, audiences: &Vec<String>) -> Self {
21        Self::new().exp(true).nbf(true).iss(issuer).aud(audiences)
22    }
23
24    pub fn iss(mut self, issuer: &str) -> Self {
25        self.iss = Some(issuer.to_owned());
26        self
27    }
28
29    pub fn exp(mut self, validate: bool) -> Self {
30        self.exp = validate;
31        self
32    }
33
34    pub fn nbf(mut self, validate: bool) -> Self {
35        self.nbf = validate;
36        self
37    }
38
39    pub fn aud(mut self, audiences: &Vec<String>) -> Self {
40        self.aud = audiences.to_owned();
41        self
42    }
43
44    pub fn validate_aud(mut self, validate: bool) -> Self {
45        self.validate_aud = validate;
46        self
47    }
48}
49
50impl Display for ClaimsValidationSpec {
51    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
52        write!(f, "{:?}", self)
53    }
54}