AddOpenIdConnect con un servicio de configuración externa

votos
0

Estoy añadiendo OpenIdConnect a mi aplicación de este modo:

.AddOpenIdConnect(oidc, options =>
{
     var clientSecret = Configuration.GetValue<string>(clientSecret);
     options.ClientSecret = clientSecret;
});

Me gustaría ser capaz de utilizar otro servicio para obtener el secreto de esta manera:

.AddOpenIdConnect(oidc, (services, options) =>
{
    var secretService = services.GetService<ISecretService>();
    var clientSecret = secretService.Get(clientSecret);
    options.ClientSecret = clientSecret;
});

Vi que hay uso de app.UseOpenIdConnectAuthenticationpero yo no lo veo en el paquete Nuget.

Tengo instalado el siguiente:

<PackageReference Include=Microsoft.AspNetCore.Authentication.OpenIdConnect Version=3.1.0 />

¿Cómo puedo hacer esto?

Publicado el 13/02/2020 a las 23:55
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
1

Es posible ejecutar una clase de configuración posterior que puede inyectar servicios. Al igual que:

public class OpenIdConnectPostConfigureOptions : IPostConfigureOptions<OpenIdConnectOptions>
{
    private readonly ISecretsService _secretsService;

    public OpenIdConnectPostConfigureOptions(ISecretsService secretsService)
    {
        _secretsService = secretsService;
    }

    public async void PostConfigure(string name, OpenIdConnectOptions options)
    {
        options.ClientSecret = await _secretsService.Get("clientSecret");
    }
}
Respondida el 14/02/2020 a las 00:25
fuente por usuario

votos
0

En el caso descrito Me gustaría recomendar que se extiende de configuración en lugar de utilizar DI en la Acción.

Para secretos de acceso puede agregar proveedores de configuración y continuar utilizando Configuration.GetValue en el método ConfigureServices.

Para Azure Key-Bóveda está bajo Microsoft.Extensions.Configuration.AzureKeyVault paquete Nuget.

public static void Main(string[] args)
{
    CreateWebHostBuilder(args)
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            if (env.IsLocal())
            {
                ...
            }
            else
            {
                config.AddAzureKeyVault(keyVaultUri);
            }
        })
        .Build()
        .Run();
}

Para AWS - Amazon.Extensions.Configuration.SystemsManager

Respondida el 14/02/2020 a las 00:46
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more