ts_webapi/middleware/
mod.rs1pub mod api_key;
4pub mod authorization;
5pub mod futures;
6#[cfg(feature = "token")]
7pub mod token;
8
9pub use api_key::ApiKeyAuth;
10pub use authorization::Authorization;
11#[cfg(feature = "token")]
12pub use token::TokenAuth;
13
14#[cfg(test)]
15pub(crate) mod test {
16 use bytes::Bytes;
17 use http::{HeaderValue, Request, header::AUTHORIZATION};
18 use http_body_util::Full;
19 use ts_crypto::any::SigningKey;
20 use ts_token::{TokenIssuer, jwt::TokenType};
21
22 pub const PEM: &str = include_str!("../../../ts-token/tests/keys/private.ed25519.pem");
23 pub const JWK: &str = r#"{"kid":"Cnm4neUDvdKZWXHIZCzcF2yqrh4rBhtrAGs47oaYkHg","use":"sig","kty":"OKP","alg":"EdDSA","crv":"Ed25519","x":"kjcgG6MObZTP8ie3IhpTxYBFxDAwNgjz6AEBnnm9K3U"}"#;
24
25 pub fn get_request(typ: Option<TokenType>) -> Request<Full<Bytes>> {
26 let mut request = Request::builder().uri("/resource/id");
27
28 if let Some(typ) = typ {
29 let key = SigningKey::from_unknown_pem(PEM.as_bytes()).expect("key should be valid");
30 let issuer = TokenIssuer::from_key(key).expect("key should be a valid issuer");
31
32 let token = issuer.issue_token("subject".to_string(), typ).serialize();
33
34 request.headers_mut().expect("request should be ok").insert(
35 AUTHORIZATION,
36 HeaderValue::from_str(&format!("bearer {token}"))
37 .expect("token should be a valid header value"),
38 );
39 }
40
41 request
42 .body(Full::<Bytes>::default())
43 .expect("request should be ok")
44 }
45}