AddOpenIdConnect mit einem externen Konfigurationsdienst

stimmen
0

Ich füge OpenIdConnect meine App wie so:

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

Ich möchte einen anderen Dienst zu nutzen, um der Lage sein, das Geheimnis, wie diese zu bekommen:

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

Ich sah es Verwendung , app.UseOpenIdConnectAuthenticationaber ich sehe es nicht in dem nuget Paket.

Ich habe folgende installiert:

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

Wie kann ich das machen?

Veröffentlicht am 13/02/2020 um 21:55
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
1

Es ist möglich, einen Beitrag Konfigurationsklasse auszuführen, die Dienste injizieren. Wie so:

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");
    }
}
Beantwortet am 13/02/2020 um 22:25
quelle vom benutzer

stimmen
0

Im beschriebenen Fall würde ich empfehlen, Konfiguration erstreckt, anstatt DI in der Aktion verwendet wird.

Um den Zugriff Geheimnisse können Sie Konfigurationsanbieter hinzufügen und weiter Configuration.GetValue in ConfigureServices Methode verwenden.

Für Azure Key-Vault ist es unter Microsoft.Extensions.Configuration.AzureKeyVault nuget Paket.

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

Für AWS - Amazon.Extensions.Configuration.SystemsManager

Beantwortet am 13/02/2020 um 22:46
quelle vom benutzer

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