using Microsoft.IdentityModel.Protocols; using Microsoft.IdentityModel.Protocols.OpenIdConnect; namespace ProofOfConcept.Utilities; using Microsoft.IdentityModel.Protocols; using Microsoft.IdentityModel.Protocols.OpenIdConnect; public sealed class TeslaOIDCConfigurationManager : IConfigurationManager { private readonly IConfigurationManager _inner; private readonly string _tokenEndpointOverride; // No HttpClient/ServiceProvider needed — uses default retriever internally public TeslaOIDCConfigurationManager(string metadataAddress, string tokenEndpointOverride) { _tokenEndpointOverride = tokenEndpointOverride; _inner = new ConfigurationManager( metadataAddress, new OpenIdConnectConfigurationRetriever()); } public async Task GetConfigurationAsync(CancellationToken cancel) { var cfg = await _inner.GetConfigurationAsync(cancel).ConfigureAwait(false); cfg.TokenEndpoint = _tokenEndpointOverride; // <-- required by Tesla return cfg; } public void RequestRefresh() => _inner.RequestRefresh(); }