AddOpenIdConnect con un servizio di configurazione esterno

voti
0

Sto aggiungendo OpenIdConnect alla mia app in questo modo:

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

Mi piacerebbe essere in grado di utilizzare un altro servizio per ottenere il segreto in questo modo:

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

Ho visto v'è l'uso di app.UseOpenIdConnectAuthentication, ma io non lo vedo nel pacchetto NuGet.

Ho installato il seguente:

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

Come posso fare questo?

È pubblicato 13/02/2020 alle 23:55
fonte dall'utente
In altre lingue...                            


2 risposte

voti
1

E 'possibile eseguire una classe di configurazione post che può iniettare servizi. Così:

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");
    }
}
Risposto il 14/02/2020 a 00:25
fonte dall'utente

voti
0

Nel caso descritto io consiglierei di estendere configurazione piuttosto che utilizzare DI nell'azione.

Per i segreti di accesso è possibile aggiungere fornitori di configurazione e continuare a utilizzare Configuration.GetValue nel metodo ConfigureServices.

Per Azure chiave-Vault è sotto Microsoft.Extensions.Configuration.AzureKeyVault package NuGet.

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

Per AWS - Amazon.Extensions.Configuration.SystemsManager

Risposto il 14/02/2020 a 00:46
fonte dall'utente

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