AddOpenIdConnect med en ekstern konfigurasjonstjenesten

stemmer
0

Jeg legger OpenIdConnect til min app som så:

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

Jeg vil gjerne være i stand til å bruke en annen tjeneste for å få hemmelig som dette:

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

Jeg så det er bruk av app.UseOpenIdConnectAuthentication, men jeg kan ikke se det i nuget pakken.

Jeg har følgende installert:

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

Hvordan kan jeg gjøre dette?

Publisert på 13/02/2020 klokken 23:55
kilden bruker
På andre språk...                            


2 svar

stemmer
1

Det er mulig å gjennomføre en etter konfigurasjon klasse som kan injisere tjenester. Som så:

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");
    }
}
Svarte 14/02/2020 kl. 00:25
kilden bruker

stemmer
0

I den beskrevne tilfelle jeg vil anbefale å utvide Configuration stedet for å bruke DI i søksmålet.

Å få tilgang til hemmeligheter kan du legge Konfigurasjons leverandører og fortsette å bruke Configuration.GetValue i ConfigureServices metode.

For Azure Key-Vault er det under Microsoft.Extensions.Configuration.AzureKeyVault nuget pakken.

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

For AWS - Amazon.Extensions.Configuration.SystemsManager

Svarte 14/02/2020 kl. 00:46
kilden bruker

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