diff options
Diffstat (limited to 'src/oauth/types.rs')
| -rw-r--r-- | src/oauth/types.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/oauth/types.rs b/src/oauth/types.rs index 6c62edf..0f9be5c 100644 --- a/src/oauth/types.rs +++ b/src/oauth/types.rs @@ -1,4 +1,5 @@ use serde::{Deserialize, Serialize}; +use crate::oauth::pkce::CodeChallengeMethod; #[derive(Debug, Serialize, Deserialize)] pub struct Claims { @@ -9,6 +10,8 @@ pub struct Claims { pub iat: u64, #[serde(skip_serializing_if = "Option::is_none")] pub scope: Option<String>, + #[serde(skip_serializing_if = "Option::is_none")] + pub jti: Option<String>, // JWT ID for token tracking } #[derive(Debug, Serialize, Deserialize)] @@ -27,6 +30,8 @@ pub struct ErrorResponse { pub error: String, #[serde(skip_serializing_if = "Option::is_none")] pub error_description: Option<String>, + #[serde(skip_serializing_if = "Option::is_none")] + pub error_uri: Option<String>, } #[derive(Debug, Clone)] @@ -36,4 +41,44 @@ pub struct AuthCode { pub scope: Option<String>, pub expires_at: u64, pub user_id: String, + // PKCE support + pub code_challenge: Option<String>, + pub code_challenge_method: Option<CodeChallengeMethod>, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct TokenIntrospectionRequest { + pub token: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub token_type_hint: Option<String>, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct TokenIntrospectionResponse { + pub active: bool, + #[serde(skip_serializing_if = "Option::is_none")] + pub client_id: Option<String>, + #[serde(skip_serializing_if = "Option::is_none")] + pub username: Option<String>, + #[serde(skip_serializing_if = "Option::is_none")] + pub scope: Option<String>, + #[serde(skip_serializing_if = "Option::is_none")] + pub exp: Option<u64>, + #[serde(skip_serializing_if = "Option::is_none")] + pub iat: Option<u64>, + #[serde(skip_serializing_if = "Option::is_none")] + pub sub: Option<String>, + #[serde(skip_serializing_if = "Option::is_none")] + pub aud: Option<String>, + #[serde(skip_serializing_if = "Option::is_none")] + pub iss: Option<String>, + #[serde(skip_serializing_if = "Option::is_none")] + pub jti: Option<String>, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct TokenRevocationRequest { + pub token: String, + #[serde(skip_serializing_if = "Option::is_none")] + pub token_type_hint: Option<String>, } |
