Configures Tesla OIDC endpoints dynamically
All checks were successful
Build, Push and Run Container / build (push) Successful in 23s
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:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user