From 890162394decf8f9eeb921d113e11079026df4e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szak=C3=A1ts=20Alp=C3=A1r=20Zsolt?= Date: Sat, 16 Aug 2025 23:37:14 +0200 Subject: [PATCH] Configures Tesla OIDC endpoints dynamically Configures the Tesla OIDC endpoints using the base URL to dynamically set authorization, token, JWKS URI, end session, and user info endpoints. This eliminates the need for a URL override function and centralizes the endpoint configuration logic. --- Source/ProofOfConcept/Program.cs | 1 + .../Utilities/TeslaOIDCConfigurationManager.cs | 17 ++++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Source/ProofOfConcept/Program.cs b/Source/ProofOfConcept/Program.cs index 1f902c3..180ec54 100644 --- a/Source/ProofOfConcept/Program.cs +++ b/Source/ProofOfConcept/Program.cs @@ -52,6 +52,7 @@ builder.Services o.Configuration.JwksUri = "https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3/discovery/thirdparty/keys"; o.Configuration.EndSessionEndpoint = "https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3/logout"; o.Configuration.UserInfoEndpoint = "https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3/userinfo"; + o.ConfigurationManager = new TeslaOIDCConfigurationManager(o.MetadataAddress); // Standard OIDC web app settings o.ResponseType = OpenIdConnectResponseType.Code; diff --git a/Source/ProofOfConcept/Utilities/TeslaOIDCConfigurationManager.cs b/Source/ProofOfConcept/Utilities/TeslaOIDCConfigurationManager.cs index cbbc3fa..1a1d67a 100644 --- a/Source/ProofOfConcept/Utilities/TeslaOIDCConfigurationManager.cs +++ b/Source/ProofOfConcept/Utilities/TeslaOIDCConfigurationManager.cs @@ -11,21 +11,24 @@ using Microsoft.IdentityModel.Protocols.OpenIdConnect; public sealed class TeslaOIDCConfigurationManager : IConfigurationManager { - private readonly Func urlOverride; private readonly IConfigurationManager _inner; - public TeslaOIDCConfigurationManager(string metadataAddress, Func urlOverride) + public TeslaOIDCConfigurationManager(string metadataAddress) { - this.urlOverride = urlOverride; - _inner = new ConfigurationManager( - metadataAddress, - new OpenIdConnectConfigurationRetriever()); + _inner = new ConfigurationManager(metadataAddress, new OpenIdConnectConfigurationRetriever()); } public async Task GetConfigurationAsync(CancellationToken cancel) { OpenIdConnectConfiguration? configuration = await _inner.GetConfigurationAsync(cancel); - configuration.TokenEndpoint = urlOverride(configuration.TokenEndpoint); + + string cloudEndpointBase = "https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3"; + configuration.AuthorizationEndpoint = $"{cloudEndpointBase}/authorize"; + configuration.TokenEndpoint = $"{cloudEndpointBase}/token"; + configuration.JwksUri = $"{cloudEndpointBase}/discovery/thirdparty/keys"; + configuration.EndSessionEndpoint = $"{cloudEndpointBase}/logout"; + configuration.UserInfoEndpoint = $"{cloudEndpointBase}/userinfo"; + return configuration; }