Files
Automatic-Parking/Source/ProofOfConcept/Utilities/TeslaOIDCConfigurationManager.cs
Szakáts Alpár Zsolt 890162394d
All checks were successful
Build, Push and Run Container / build (push) Successful in 23s
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.
2025-08-16 23:37:14 +02:00

36 lines
1.5 KiB
C#

using System.Collections.Concurrent;
using System.IdentityModel.Tokens.Jwt;
using Microsoft.IdentityModel.Protocols;
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
using Microsoft.IdentityModel.Tokens;
namespace ProofOfConcept.Utilities;
using Microsoft.IdentityModel.Protocols;
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
public sealed class TeslaOIDCConfigurationManager : IConfigurationManager<OpenIdConnectConfiguration>
{
private readonly IConfigurationManager<OpenIdConnectConfiguration> _inner;
public TeslaOIDCConfigurationManager(string metadataAddress)
{
_inner = new ConfigurationManager<OpenIdConnectConfiguration>(metadataAddress, new OpenIdConnectConfigurationRetriever());
}
public async Task<OpenIdConnectConfiguration> GetConfigurationAsync(CancellationToken cancel)
{
OpenIdConnectConfiguration? configuration = await _inner.GetConfigurationAsync(cancel);
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;
}
public void RequestRefresh() => _inner.RequestRefresh();
}