use serde_derive::{Deserialize, Serialize};
fn default_oauth2_request_encoding() -> String{
OAuth2RequestEncoding::FORM_URL.to_string()
}
fn default_token_endpoint() -> String{
"/oauth2/token".to_string()
}
fn default_revocation_endpoint() -> String{
"/oauth2/revoke".to_string()
}
fn default_introspection_endpoint() -> String{
"/oauth2/introspect".to_string()
}
pub struct AuthenticationScheme;
impl AuthenticationScheme {
pub const BASIC: &'static str = "Basic";
pub const BEARER: &'static str = "Bearer";
pub const CERTIFICATE: &'static str = "Certificate";
pub const DIGEST: &'static str = "Digest";
pub const OAUTH2: &'static str = "OAuth2";
pub const OIDC: &'static str = "OpenIDConnect";
}
pub struct OAuth2ClientAuthenticationMethod;
impl OAuth2ClientAuthenticationMethod{
pub const BASIC: &'static str = "client_secret_basic";
pub const POST: &'static str = "client_secret_post";
pub const JWT: &'static str = "client_secret_jwt";
pub const PRIVATE_KEY: &'static str = "private_key_jwt";
pub const NONE: &'static str = "none";
}
pub struct OAuth2RequestEncoding;
impl OAuth2RequestEncoding{
pub const FORM_URL: &'static str = "application/x-www-form-urlencoded";
pub const JSON: &'static str = "application/json";
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
pub struct AuthenticationPolicyDefinition{
#[serde(rename = "use", skip_serializing_if = "Option::is_none")]
pub use_: Option<String>,
#[serde(rename = "basic", skip_serializing_if = "Option::is_none")]
pub basic : Option<BasicAuthenticationSchemeDefinition>,
#[serde(rename = "bearer", skip_serializing_if = "Option::is_none")]
pub bearer : Option<BearerAuthenticationSchemeDefinition>,
#[serde(rename = "certificate", skip_serializing_if = "Option::is_none")]
pub certificate : Option<CertificateAuthenticationSchemeDefinition>,
#[serde(rename = "digest", skip_serializing_if = "Option::is_none")]
pub digest : Option<DigestAuthenticationSchemeDefinition>,
#[serde(rename = "oauth2", skip_serializing_if = "Option::is_none")]
pub oauth2 : Option<OAuth2AuthenticationSchemeDefinition>,
#[serde(rename = "oidc", skip_serializing_if = "Option::is_none")]
pub oidc : Option<OpenIDConnectSchemeDefinition>
}
pub trait AuthenticationSchemeDefinition {
fn scheme(&self) -> &str;
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
pub struct BasicAuthenticationSchemeDefinition{
#[serde(rename = "use", skip_serializing_if = "Option::is_none")]
pub use_: Option<String>,
#[serde(rename = "username", skip_serializing_if = "Option::is_none")]
pub username : Option<String>,
#[serde(rename = "password", skip_serializing_if = "Option::is_none")]
pub password : Option<String>
}
impl AuthenticationSchemeDefinition for BasicAuthenticationSchemeDefinition {
fn scheme(&self) -> &str {
AuthenticationScheme::BASIC
}
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
pub struct BearerAuthenticationSchemeDefinition{
#[serde(rename = "use", skip_serializing_if = "Option::is_none")]
pub use_: Option<String>,
#[serde(rename = "token", skip_serializing_if = "Option::is_none")]
pub token : Option<String>
}
impl AuthenticationSchemeDefinition for BearerAuthenticationSchemeDefinition{
fn scheme(&self) -> &str {
AuthenticationScheme::BEARER
}
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
pub struct CertificateAuthenticationSchemeDefinition{
#[serde(rename = "use", skip_serializing_if = "Option::is_none")]
pub use_: Option<String>,
}
impl AuthenticationSchemeDefinition for CertificateAuthenticationSchemeDefinition{
fn scheme(&self) -> &str {
AuthenticationScheme::CERTIFICATE
}
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
pub struct DigestAuthenticationSchemeDefinition{
#[serde(rename = "use", skip_serializing_if = "Option::is_none")]
pub use_: Option<String>,
#[serde(rename = "username", skip_serializing_if = "Option::is_none")]
pub username : Option<String>,
#[serde(rename = "password", skip_serializing_if = "Option::is_none")]
pub password : Option<String>
}
impl AuthenticationSchemeDefinition for DigestAuthenticationSchemeDefinition{
fn scheme(&self) -> &str {
AuthenticationScheme::DIGEST
}
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
pub struct OAuth2AuthenticationClientDefinition{
#[serde(rename = "id", skip_serializing_if = "Option::is_none")]
pub id : Option<String>,
#[serde(rename = "secret", skip_serializing_if = "Option::is_none")]
pub secret : Option<String>,
#[serde(rename = "assertion", skip_serializing_if = "Option::is_none")]
pub assertion : Option<String>,
#[serde(rename = "authentication", skip_serializing_if = "Option::is_none")]
pub authentication : Option<String>,
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
pub struct OAuth2AuthenticationRequestDefinition{
#[serde(rename = "encoding", default = "default_oauth2_request_encoding")]
pub encoding : String
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
pub struct OAuth2TokenDefinition{
#[serde(rename = "encoding")]
pub token : String,
#[serde(rename = "type")]
pub type_ : String
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
pub struct OAuth2AuthenticationEndpointsDefinition{
#[serde(rename = "token", default = "default_token_endpoint")]
pub token : String,
#[serde(rename = "revocation", default = "default_revocation_endpoint")]
pub revocation : String,
#[serde(rename = "introspection", default = "default_introspection_endpoint")]
pub introspection : String,
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
pub struct OAuth2AuthenticationSchemeDefinition{
#[serde(rename = "use", skip_serializing_if = "Option::is_none")]
pub use_: Option<String>,
#[serde(rename = "endpoints", skip_serializing_if = "Option::is_none")]
pub endpoints : Option<OAuth2AuthenticationEndpointsDefinition>,
#[serde(rename = "authority", skip_serializing_if = "Option::is_none")]
pub authority: Option<String>,
#[serde(rename = "grant", skip_serializing_if = "Option::is_none")]
pub grant: Option<String>,
#[serde(rename = "client", skip_serializing_if = "Option::is_none")]
pub client: Option<OAuth2AuthenticationClientDefinition>,
#[serde(rename = "request", skip_serializing_if = "Option::is_none")]
pub request: Option<OAuth2AuthenticationRequestDefinition>,
#[serde(rename = "issuers", skip_serializing_if = "Option::is_none")]
pub issuers: Option<Vec<String>>,
#[serde(rename = "scopes", skip_serializing_if = "Option::is_none")]
pub scopes: Option<Vec<String>>,
#[serde(rename = "audiences", skip_serializing_if = "Option::is_none")]
pub audiences: Option<Vec<String>>,
#[serde(rename = "username", skip_serializing_if = "Option::is_none")]
pub username: Option<String>,
#[serde(rename = "password", skip_serializing_if = "Option::is_none")]
pub password: Option<String>,
#[serde(rename = "subject", skip_serializing_if = "Option::is_none")]
pub subject: Option<OAuth2TokenDefinition>,
#[serde(rename = "actor", skip_serializing_if = "Option::is_none")]
pub actor: Option<OAuth2TokenDefinition>
}
impl AuthenticationSchemeDefinition for OAuth2AuthenticationSchemeDefinition{
fn scheme(&self) -> &str {
AuthenticationScheme::OAUTH2
}
}
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
pub struct OpenIDConnectSchemeDefinition{
#[serde(rename = "use", skip_serializing_if = "Option::is_none")]
pub use_: Option<String>,
#[serde(rename = "authority", skip_serializing_if = "Option::is_none")]
pub authority: Option<String>,
#[serde(rename = "grant", skip_serializing_if = "Option::is_none")]
pub grant: Option<String>,
#[serde(rename = "client", skip_serializing_if = "Option::is_none")]
pub client: Option<OAuth2AuthenticationClientDefinition>,
#[serde(rename = "request", skip_serializing_if = "Option::is_none")]
pub request: Option<OAuth2AuthenticationRequestDefinition>,
#[serde(rename = "issuers", skip_serializing_if = "Option::is_none")]
pub issuers: Option<Vec<String>>,
#[serde(rename = "scopes", skip_serializing_if = "Option::is_none")]
pub scopes: Option<Vec<String>>,
#[serde(rename = "audiences", skip_serializing_if = "Option::is_none")]
pub audiences: Option<Vec<String>>,
#[serde(rename = "username", skip_serializing_if = "Option::is_none")]
pub username: Option<String>,
#[serde(rename = "password", skip_serializing_if = "Option::is_none")]
pub password: Option<String>,
#[serde(rename = "subject", skip_serializing_if = "Option::is_none")]
pub subject: Option<OAuth2TokenDefinition>,
#[serde(rename = "actor", skip_serializing_if = "Option::is_none")]
pub actor: Option<OAuth2TokenDefinition>
}
impl AuthenticationSchemeDefinition for OpenIDConnectSchemeDefinition{
fn scheme(&self) -> &str {
AuthenticationScheme::OIDC
}
}