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