C# 如何通过回调获取提供程序显示名称

C# 如何通过回调获取提供程序显示名称,c#,.net-core,identityserver4,C#,.net Core,Identityserver4,我正在使用IdentityServer4框架。在startup.cs中,我将providerName设置为第二个参数。我有一个externalController.cs来处理外部登录。但是,我找不到在回调函数中获取providerName的方法。我读了文件;它说我可以通过质询函数传递它,但是质询函数只接受两个参数(provider和returnUrl)。其中,提供程序只是oidc,而不是提供程序名称 在startup.cs中 services.AddAuthentication()

我正在使用IdentityServer4框架。在startup.cs中,我将
providerName
设置为第二个参数。我有一个externalController.cs来处理外部登录。但是,我找不到在回调函数中获取
providerName
的方法。我读了文件;它说我可以通过质询函数传递它,但是质询函数只接受两个参数(
provider
returnUrl
)。其中,提供程序只是oidc,而不是提供程序名称

在startup.cs中

services.AddAuthentication()                        
    .AddOpenIdConnect("oidc", extAuthProvider.GetValue<string>("ProviderName"), options =>
    {...}
有人建议
iaAuthenticationSchemeProvider.GetSchemeAsync
,但我不明白它是如何应用的

public async Task<IActionResult> Challenge(string provider, string returnUrl)
{
    if (string.IsNullOrEmpty(returnUrl))
    {
        returnUrl = "~/";
    }

    // validate returnUrl - either it is a valid OIDC URL or back to a local page
    if (Url.IsLocalUrl(returnUrl) == false && _interaction.IsValidReturnUrl(returnUrl) == false)
    {
        // user might have clicked on a malicious link - should be logged
        throw new ArgumentException("invalid return URL");
    }

    if (provider == AccountOptions.WindowsAuthenticationSchemeName)
    {
        // windows authentication needs special handling
        return await ProcessWindowsLoginAsync(returnUrl).ConfigureAwait(false);
    }
    else
    {
        // start challenge and roundtrip the return URL and scheme
        var props = new AuthenticationProperties
        {
            RedirectUri = Url.Action(nameof(Callback)),
            Items =
            {
                { "returnUrl", returnUrl },
                { "scheme", provider },
            }
        };

        return Challenge(props, provider);
    }
}
var result = await HttpContext.AuthenticateAsync(IdentityServer4.IdentityServerConstants.ExternalCookieAuthenticationScheme).ConfigureAwait(false);