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.
36 lines
1.5 KiB
C#
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();
|
|
} |