AddOpenIdConnect z usługą konfiguracji Zewnętrznych

głosy
0

Dodaję OpenIdConnect do mojej aplikacji tak:

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

Chciałbym, aby móc korzystać z innej usługi, aby uzyskać tajne takiego:

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

Widziałem tam jest stosowanie app.UseOpenIdConnectAuthenticationale nie widzę go w pakiecie Nuget.

Mam zainstalowane następujące:

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

W jaki sposób mogę to zrobić?

Utwórz 13/02/2020 o 21:55
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
1

Jest to możliwe do wykonania pocztowy klasę konfiguracji, które można wstrzyknąć usług. Tak:

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");
    }
}
Odpowiedział 13/02/2020 o 22:25
źródło użytkownik

głosy
0

W opisanym przypadku, polecam rozszerzenie konfiguracji zamiast używać DI w działaniu.

Dostępu do tajemnic można dodać dostawców konfiguracja i nadal korzystać Configuration.GetValue w metodzie ConfigureServices.

Dla Azure Key-Vault jest pod Microsoft.Extensions.Configuration.AzureKeyVault pakietu Nuget.

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

Dla AWS - Amazon.Extensions.Configuration.SystemsManager

Odpowiedział 13/02/2020 o 22:46
źródło użytkownik

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