All checks were successful
Build, Push and Run Container / build (push) Successful in 24s
Implements authentication against the Tesla Fleet API using OpenID Connect. Uses a custom OIDC configuration manager to override the token endpoint. Configures authentication services and adds required scopes and parameters. Adds endpoints for application registration and token retrieval during development.
31 lines
1.2 KiB
C#
31 lines
1.2 KiB
C#
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<OpenIdConnectConfiguration>
|
|
{
|
|
private readonly IConfigurationManager<OpenIdConnectConfiguration> _inner;
|
|
private readonly string _tokenEndpointOverride;
|
|
|
|
// No HttpClient/ServiceProvider needed — uses default retriever internally
|
|
public TeslaOIDCConfigurationManager(string metadataAddress, string tokenEndpointOverride)
|
|
{
|
|
_tokenEndpointOverride = tokenEndpointOverride;
|
|
_inner = new ConfigurationManager<OpenIdConnectConfiguration>(
|
|
metadataAddress,
|
|
new OpenIdConnectConfigurationRetriever());
|
|
}
|
|
|
|
public async Task<OpenIdConnectConfiguration> GetConfigurationAsync(CancellationToken cancel)
|
|
{
|
|
var cfg = await _inner.GetConfigurationAsync(cancel).ConfigureAwait(false);
|
|
cfg.TokenEndpoint = _tokenEndpointOverride; // <-- required by Tesla
|
|
return cfg;
|
|
}
|
|
|
|
public void RequestRefresh() => _inner.RequestRefresh();
|
|
} |