11use std:: str:: FromStr ;
22
33use common_utils:: { events:: ApiEventMetric , pii} ;
4+ use masking:: Secret ;
45use serde:: { Deserialize , Serialize } ;
56use utoipa:: ToSchema ;
67
@@ -23,56 +24,58 @@ const CLAIMS_SUPPORTED: &[Claim] = &[
2324] ;
2425
2526/// OIDC Response Type
26- #[ derive( Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
27+ #[ derive( Copy , Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
2728#[ serde( rename_all = "snake_case" ) ]
2829pub enum ResponseType {
2930 Code ,
3031}
3132
3233/// OIDC Response Mode
33- #[ derive( Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
34+ #[ derive( Copy , Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
3435#[ serde( rename_all = "snake_case" ) ]
3536pub enum ResponseMode {
3637 Query ,
3738}
3839
3940/// OIDC Subject Type
40- #[ derive( Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
41+ #[ derive( Copy , Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
4142#[ serde( rename_all = "snake_case" ) ]
4243pub enum SubjectType {
4344 Public ,
4445}
4546
4647/// OIDC Signing Algorithm
47- #[ derive( Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
48+ #[ derive( Copy , Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
4849pub enum SigningAlgorithm {
4950 #[ serde( rename = "RS256" ) ]
5051 Rs256 ,
5152}
5253
5354/// JWK Key Type
54- #[ derive( Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
55+ #[ derive( Copy , Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
5556pub enum KeyType {
5657 #[ serde( rename = "RSA" ) ]
5758 Rsa ,
5859}
5960
6061/// JWK Key Use
61- #[ derive( Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
62+ #[ derive( Copy , Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
6263#[ serde( rename_all = "snake_case" ) ]
6364pub enum KeyUse {
6465 Sig ,
6566}
6667
6768/// OIDC Grant Type
68- #[ derive( Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
69+ #[ derive( Copy , Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
6970#[ serde( rename_all = "snake_case" ) ]
7071pub enum GrantType {
7172 AuthorizationCode ,
7273}
7374
7475/// OIDC Scope
75- #[ derive( Clone , Debug , PartialEq , serde:: Serialize , serde:: Deserialize , strum:: EnumString ) ]
76+ #[ derive(
77+ Copy , Clone , Debug , PartialEq , serde:: Serialize , serde:: Deserialize , strum:: EnumString ,
78+ ) ]
7679#[ serde( rename_all = "snake_case" ) ]
7780#[ strum( serialize_all = "snake_case" ) ]
7881pub enum Scope {
@@ -81,14 +84,14 @@ pub enum Scope {
8184}
8285
8386/// OIDC Token Endpoint Authentication Method
84- #[ derive( Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
87+ #[ derive( Copy , Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
8588#[ serde( rename_all = "snake_case" ) ]
8689pub enum TokenAuthMethod {
8790 ClientSecretBasic ,
8891}
8992
9093/// OIDC Claim
91- #[ derive( Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
94+ #[ derive( Copy , Clone , Debug , serde:: Serialize , serde:: Deserialize ) ]
9295#[ serde( rename_all = "snake_case" ) ]
9396pub enum Claim {
9497 Aud ,
@@ -101,7 +104,7 @@ pub enum Claim {
101104}
102105
103106/// OIDC Authorization Error as per RFC 6749
104- #[ derive( Clone , Debug , serde:: Serialize , serde:: Deserialize , strum:: Display ) ]
107+ #[ derive( Copy , Clone , Debug , serde:: Serialize , serde:: Deserialize , strum:: Display ) ]
105108#[ serde( rename_all = "snake_case" ) ]
106109#[ strum( serialize_all = "snake_case" ) ]
107110pub enum OidcAuthorizationError {
@@ -115,7 +118,7 @@ pub enum OidcAuthorizationError {
115118}
116119
117120/// OIDC Token Error as per RFC 6749
118- #[ derive( Clone , Debug , serde:: Serialize , serde:: Deserialize , strum:: Display ) ]
121+ #[ derive( Copy , Clone , Debug , serde:: Serialize , serde:: Deserialize , strum:: Display ) ]
119122#[ serde( rename_all = "snake_case" ) ]
120123#[ strum( serialize_all = "snake_case" ) ]
121124pub enum OidcTokenError {
@@ -320,7 +323,8 @@ pub struct OidcTokenRequest {
320323#[ derive( Debug , Clone , Serialize , Deserialize , ToSchema ) ]
321324pub struct OidcTokenResponse {
322325 /// ID Token value associated with the authenticated session
323- pub id_token : String ,
326+ #[ schema( value_type = String ) ]
327+ pub id_token : Secret < String > ,
324328
325329 /// OAuth 2.0 Token Type value
326330 #[ schema( example = "Bearer" ) ]
@@ -331,9 +335,38 @@ pub struct OidcTokenResponse {
331335 pub expires_in : u64 ,
332336}
333337
334- impl ApiEventMetric for OidcDiscoveryResponse { }
335- impl ApiEventMetric for JwksResponse { }
336- impl ApiEventMetric for OidcAuthorizeQuery { }
337- impl ApiEventMetric for AuthCodeData { }
338- impl ApiEventMetric for OidcTokenRequest { }
339- impl ApiEventMetric for OidcTokenResponse { }
338+ impl ApiEventMetric for OidcDiscoveryResponse {
339+ fn get_api_event_type ( & self ) -> Option < common_utils:: events:: ApiEventsType > {
340+ Some ( common_utils:: events:: ApiEventsType :: Oidc )
341+ }
342+ }
343+
344+ impl ApiEventMetric for JwksResponse {
345+ fn get_api_event_type ( & self ) -> Option < common_utils:: events:: ApiEventsType > {
346+ Some ( common_utils:: events:: ApiEventsType :: Oidc )
347+ }
348+ }
349+
350+ impl ApiEventMetric for OidcAuthorizeQuery {
351+ fn get_api_event_type ( & self ) -> Option < common_utils:: events:: ApiEventsType > {
352+ Some ( common_utils:: events:: ApiEventsType :: Oidc )
353+ }
354+ }
355+
356+ impl ApiEventMetric for AuthCodeData {
357+ fn get_api_event_type ( & self ) -> Option < common_utils:: events:: ApiEventsType > {
358+ Some ( common_utils:: events:: ApiEventsType :: Oidc )
359+ }
360+ }
361+
362+ impl ApiEventMetric for OidcTokenRequest {
363+ fn get_api_event_type ( & self ) -> Option < common_utils:: events:: ApiEventsType > {
364+ Some ( common_utils:: events:: ApiEventsType :: Oidc )
365+ }
366+ }
367+
368+ impl ApiEventMetric for OidcTokenResponse {
369+ fn get_api_event_type ( & self ) -> Option < common_utils:: events:: ApiEventsType > {
370+ Some ( common_utils:: events:: ApiEventsType :: Oidc )
371+ }
372+ }
0 commit comments