diff --git a/src/lib.rs b/src/lib.rs index aead3d74..e9fbd940 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -36,6 +36,7 @@ use openidconnect::{ Scope, UserInfoClaims, AdditionalClaims, + AuthenticationContextClass, }; /// Stores Additional Claims into a serde_json::Value; @@ -55,6 +56,8 @@ pub struct OpenIdConfig { pub scopes: Option>, #[serde(skip_serializing_if="Option::is_none")] pub prompt: Option, + #[serde(skip_serializing_if="Option::is_none")] + pub acr_values: Option>, } pub struct OpenIdAuthenticator { @@ -175,6 +178,12 @@ impl OpenIdAuthenticator { } } + if let Some(ref acr_values) = self.config.acr_values { + for acr in acr_values.clone() { + request = request.add_auth_context_value(AuthenticationContextClass::new(acr)); + } + } + let (authorize_url, _csrf_state, _nonce) = request.url(); Ok(authorize_url.to_string())