首页 > 解决方案 > AddOpenIdConnect 与外部配置服务

问题描述

我将 OpenIdConnect 添加到我的应用程序中,如下所示:

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

我希望能够使用其他服务来获取这样的秘密:

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

我看到有使用,app.UseOpenIdConnectAuthentication但我没有在 nuget 包中看到它。

我安装了以下内容:

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

我怎样才能做到这一点?

标签: c#.net-coreopenidasp.net-core-3.1

解决方案


在所描述的情况下,我建议扩展配置而不是在操作中使用 DI。

要访问机密,您可以添加配置提供程序并继续在 ConfigureServices 方法中使用 Configuration.GetValue。

对于 Azure Key-Vault,它位于Microsoft.Extensions.Configuration.AzureKeyVault nuget 包下。

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

对于 AWS - Amazon.Extensions.Configuration.SystemsManager


推荐阅读