Configures Tesla OIDC endpoints dynamically
All checks were successful
Build, Push and Run Container / build (push) Successful in 23s

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.
This commit is contained in:
2025-08-16 23:37:14 +02:00
parent a192f1380b
commit 890162394d
2 changed files with 11 additions and 7 deletions

View File

@@ -11,21 +11,24 @@ using Microsoft.IdentityModel.Protocols.OpenIdConnect;
public sealed class TeslaOIDCConfigurationManager : IConfigurationManager<OpenIdConnectConfiguration>
{
private readonly Func<string, string> urlOverride;
private readonly IConfigurationManager<OpenIdConnectConfiguration> _inner;
public TeslaOIDCConfigurationManager(string metadataAddress, Func<string, string> urlOverride)
public TeslaOIDCConfigurationManager(string metadataAddress)
{
this.urlOverride = urlOverride;
_inner = new ConfigurationManager<OpenIdConnectConfiguration>(
metadataAddress,
new OpenIdConnectConfigurationRetriever());
_inner = new ConfigurationManager<OpenIdConnectConfiguration>(metadataAddress, new OpenIdConnectConfigurationRetriever());
}
public async Task<OpenIdConnectConfiguration> 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;
}