fix: issuer URL at / path

Previously the issuer url was received as an http::Uri.
When it was converted into a String, a `/` was appended which caused the
IssuerURL validation check in openidconnect to fail.
Now the IssuerURL is received as a String.
This commit is contained in:
Paul Zinselmeyer 2025-04-18 15:42:16 +02:00
parent 19adcbabd2
commit fa5faed004
Signed by: pfzetto
GPG key ID: B471A1AF06C895FD
2 changed files with 3 additions and 7 deletions

View file

@ -42,11 +42,7 @@ pub async fn run(
if let Some(client_secret) = client_secret {
oidc_client = oidc_client.with_client_secret(client_secret);
}
let oidc_client = oidc_client
.discover(Uri::from_maybe_shared(issuer).expect("valid issuer URI"))
.await
.unwrap()
.build();
let oidc_client = oidc_client.discover(issuer).await.unwrap().build();
let oidc_auth_service = ServiceBuilder::new()
.layer(HandleErrorLayer::new(|e: MiddlewareError| async {

View file

@ -195,12 +195,12 @@ impl<AC: AdditionalClaims> Builder<AC, ClientCredentials, (), HttpClient, Redire
/// discover issuer details
pub async fn discover(
self,
issuer: impl Into<Uri>,
issuer: String,
) -> Result<
Builder<AC, ClientCredentials, OpenidconnectClient<AC>, HttpClient, RedirectUrl>,
Error,
> {
let issuer_url = IssuerUrl::new(issuer.into().to_string())?;
let issuer_url = IssuerUrl::new(issuer)?;
let http_client = self.http_client.0.clone();
let provider_metadata = ProviderMetadata::discover_async(issuer_url, &http_client);