[pdm-devel] [PATCH proxmox v3 06/21] auth-api: introduce new CreateTicket and CreateTickeReponse api types
Shannon Sterz
s.sterz at proxmox.com
Thu Feb 27 15:06:57 CET 2025
these types are used for creating a ticket and responding to a new
ticket request.
Signed-off-by: Shannon Sterz <s.sterz at proxmox.com>
---
proxmox-auth-api/src/types.rs | 56 ++++++++++++++++++++++++++++++++++-
1 file changed, 55 insertions(+), 1 deletion(-)
diff --git a/proxmox-auth-api/src/types.rs b/proxmox-auth-api/src/types.rs
index 64c580a5..81c43ab6 100644
--- a/proxmox-auth-api/src/types.rs
+++ b/proxmox-auth-api/src/types.rs
@@ -417,7 +417,7 @@ impl<'a> TryFrom<&'a str> for &'a TokennameRef {
}
/// A complete user id consisting of a user name and a realm
-#[derive(Clone, Debug, PartialEq, Eq, Hash, Ord, PartialOrd, UpdaterType)]
+#[derive(Clone, Debug, Default, PartialEq, Eq, Hash, Ord, PartialOrd, UpdaterType)]
pub struct Userid {
data: String,
name_len: usize,
@@ -676,6 +676,60 @@ impl TryFrom<String> for Authid {
}
}
+#[api]
+/// The parameter object for creating new ticket.
+#[derive(Debug, Default, Deserialize, Serialize)]
+pub struct CreateTicket {
+ /// User name
+ pub username: Userid,
+
+ /// The secret password. This can also be a valid ticket. Only optional if the ticket is
+ /// provided in a cookie header and only if the endpoint supports this.
+ #[serde(default)]
+ pub password: Option<String>,
+
+ /// Verify ticket, and check if user have access 'privs' on 'path'.
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ pub path: Option<String>,
+
+ /// Verify ticket, and check if user have access 'privs' on 'path'.
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ pub privs: Option<String>,
+
+ /// Port for verifying terminal tickets.
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ pub port: Option<u16>,
+
+ /// The signed TFA challenge string the user wants to respond to.
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ #[serde(rename = "tfa-challenge")]
+ pub tfa_challenge: Option<String>,
+}
+
+#[api]
+/// The API response for a ticket call.
+#[derive(Debug, Default, Deserialize, Serialize)]
+pub struct CreateTicketResponse {
+ /// The CSRF prevention token.
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ #[serde(rename = "CSRFPreventionToken")]
+ pub csrfprevention_token: Option<String>,
+
+ /// The ticket as is supposed to be used in the authentication header. Not provided here if the
+ /// endpoint uses HttpOnly cookies to supply the actual ticket.
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ pub ticket: Option<String>,
+
+ /// Like a full ticket, except the signature is missing. Useful in HttpOnly-contexts
+ /// (browsers).
+ #[serde(default, skip_serializing_if = "Option::is_none")]
+ #[serde(rename = "ticket-info")]
+ pub ticket_info: Option<String>,
+
+ /// The userid.
+ pub username: Userid,
+}
+
#[test]
fn test_token_id() {
let userid: Userid = "test at pam".parse().expect("parsing Userid failed");
--
2.39.5
More information about the pdm-devel
mailing list