authentication - 在ASP.NET Core 2中获取当前的身份验证方案

标签 authentication asp.net-core openid

我目前正在努力使用一个Asp.net core 2应用程序,该应用程序使用两个openid提供程序进行身份验证,并映射到两个不同的身份验证方案(具有不同的名称)。

我面临的问题是尝试注销当前正在使用的特定方案。例如,如果我同时支持Google和Facebook身份验证,则需要了解当前正在使用哪种方案,并调用SignOut方法来指示正确的方案。这使我可以清除本地cookie,还可以将用户重定向到外部身份提供者并注销。

事实是,我无法找到某种GetCurrentScheme()函数,因此我可以用来在SignOut方法中指定方案。我确定我缺少一些基本的知识...

最佳答案

似乎没有任何直接方法可以找到当前方案。这是一种粗略的方法:

private readonly IAuthenticationSchemeProvider authenticationSchemeProvider;
...
foreach(var scheme in authenticationSchemeProvider.GetRequestHandlerSchemesAsync()){
    var authResult = await context.AuthenticateAsync(scheme.Name);
    if(authResult.Succeeded)
        // this is the scheme that was used for authentication
}

关于authentication - 在ASP.NET Core 2中获取当前的身份验证方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54832713/

相关文章:

python - 如何解决使用 Python 读取和写入 HDFS 时的代理错误?

php - 如何在登录后重定向到同一页面

asp.net-core - SignalR 核心和跨域请求问题

python - 来自 cookie 的 Python MediaWiki 身份验证

oauth-2.0 - 身份服务器流程

authentication - 我正在尝试通过在应用程序(登录和网页)之间共享 cookie 在 .net core 3.1 中实现 SSO

redirect - Laravel 5.3 登录成功后重定向到上一页

c# - Azure 云存储 SDK UploadFromStreamAsync 不起作用

c# - 授权策略始终返回 403(禁止)-MVC/API

openid - 2017 年 1 月 1 日,Google OpenId Connect 到 OpenID 2.0 映射究竟会发生什么?