From 992cdb8ef93b4a161692f1da09a7e3121303d896 Mon Sep 17 00:00:00 2001 From: JuliDi <20155974+JuliDi@users.noreply.github.com> Date: Fri, 21 Nov 2025 11:49:29 +0100 Subject: [PATCH] use openidconnect ClientId and ClientSecret directly instead of Box --- examples/basic/src/lib.rs | 8 ++++---- src/builder.rs | 13 +++++-------- src/extractor.rs | 4 ++-- src/lib.rs | 3 ++- 4 files changed, 13 insertions(+), 15 deletions(-) diff --git a/examples/basic/src/lib.rs b/examples/basic/src/lib.rs index 96593ee..8f7bbc2 100644 --- a/examples/basic/src/lib.rs +++ b/examples/basic/src/lib.rs @@ -6,8 +6,8 @@ use axum::{ Router, }; use axum_oidc::{ - error::MiddlewareError, handle_oidc_redirect, EmptyAdditionalClaims, OidcAuthLayer, OidcClaims, - OidcClient, OidcLoginLayer, OidcRpInitiatedLogout, + error::MiddlewareError, handle_oidc_redirect, ClientId, ClientSecret, EmptyAdditionalClaims, + OidcAuthLayer, OidcClaims, OidcClient, OidcLoginLayer, OidcRpInitiatedLogout, }; use tokio::net::TcpListener; use tower::ServiceBuilder; @@ -33,9 +33,9 @@ pub async fn run(issuer: String, client_id: String, client_secret: Option::builder() .with_default_http_client() .with_redirect_url(Uri::from_static("http://localhost:8080/oidc")) - .with_client_id(client_id); + .with_client_id(ClientId::new(client_id)); if let Some(client_secret) = client_secret { - oidc_client = oidc_client.with_client_secret(client_secret); + oidc_client = oidc_client.with_client_secret(ClientSecret::new(client_secret)); } let oidc_client = oidc_client.discover(issuer).await.unwrap().build(); diff --git a/src/builder.rs b/src/builder.rs index c04c58f..6df0d77 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -11,8 +11,8 @@ pub struct HttpClient(reqwest::Client); pub struct RedirectUrl(Uri); pub struct ClientCredentials { - id: Box, - secret: Option>, + id: ClientId, + secret: Option, } pub struct Builder { @@ -77,7 +77,7 @@ impl Builder>, + id: impl Into, ) -> Builder { Builder::<_, _, _, _, _> { credentials: ClientCredentials { @@ -97,7 +97,7 @@ impl Builder Builder { /// set client secret for authentication with issuer - pub fn with_client_secret(mut self, secret: impl Into>) -> Self { + pub fn with_client_secret(mut self, secret: impl Into) -> Self { self.credentials.secret = Some(secret.into()); self } @@ -172,10 +172,7 @@ impl Builder for OidcAccessToken { pub struct OidcRpInitiatedLogout { pub(crate) end_session_endpoint: Uri, pub(crate) id_token_hint: Box, - pub(crate) client_id: Box, + pub(crate) client_id: ClientId, pub(crate) post_logout_redirect_uri: Option, pub(crate) state: Option, } diff --git a/src/lib.rs b/src/lib.rs index dc22366..5251088 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -27,6 +27,7 @@ mod middleware; pub use extractor::{OidcAccessToken, OidcClaims, OidcRpInitiatedLogout}; pub use handler::handle_oidc_redirect; pub use middleware::{OidcAuthLayer, OidcAuthMiddleware, OidcLoginLayer, OidcLoginMiddleware}; +pub use openidconnect::{Audience, ClientId, ClientSecret}; const SESSION_KEY: &str = "axum-oidc"; @@ -102,7 +103,7 @@ pub type BoxError = Box; #[derive(Clone)] pub struct OidcClient { scopes: Vec>, - client_id: Box, + client_id: ClientId, client: Client, http_client: reqwest::Client, end_session_endpoint: Option,