All checks were successful
Build, Push and Run Container / build (push) Successful in 24s
Configures the OpenID Connect (OIDC) authentication flow by explicitly setting the authorization, token, JWKS, end session, and user info endpoints. This change removes the custom OIDC configuration manager and directly sets the configuration within the OIDC options. This approach simplifies the configuration and ensures that the application uses the correct endpoints for authentication and authorization with the third-party provider.
33 lines
1.2 KiB
C#
33 lines
1.2 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 Func<string, string> urlOverride;
|
|
private readonly IConfigurationManager<OpenIdConnectConfiguration> _inner;
|
|
|
|
public TeslaOIDCConfigurationManager(string metadataAddress, Func<string, string> urlOverride)
|
|
{
|
|
this.urlOverride = urlOverride;
|
|
_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);
|
|
return configuration;
|
|
}
|
|
|
|
public void RequestRefresh() => _inner.RequestRefresh();
|
|
} |