Asp net core 和 Firebase 身份验证
Posted
技术标签:
【中文标题】Asp net core 和 Firebase 身份验证【英文标题】:Asp net core and Firebase Authentication 【发布时间】:2021-06-15 15:44:32 【问题描述】:在我的 asp net core 5 (api) 中,我已将 firebase 身份验证与此中间件集成:
public void ConfigureServices(IServiceCollection services)
services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
options.Authority = "https://securetoken.google.com/my-project-id";
options.TokenValidationParameters = new TokenValidationParameters
ValidateIssuer = true,
ValidIssuer = "https://securetoken.google.com/my-project-id",
ValidateAudience = true,
ValidAudience = "my-project-id",
ValidateLifetime = true
;
);
services.AddControllers();
我已经学习了这个教程:https://blog.markvincze.com/secure-an-asp-net-core-api-with-firebase/
有效:将 [Authorize] 添加到控制器,我需要传递不记名令牌。 现在,在控制器操作中,我需要获取经过身份验证的当前用户 ID 和电子邮件。
如何从 firebase(通过 firebase 验证的用户)获取用户 ID 和用户电子邮件?
【问题讨论】:
每个令牌都有声明,声明是令牌中的东西,例如 id 、电子邮件和类似的东西,您必须确保 google 发回您想要的声明并通过其获取声明通过 HTTPAccessor 键 【参考方案1】:据我所知,在用户成功登录后,asp.net 核心会将令牌中的声明写入用户声明属性中。然后您可以从控制器或其他类中的 httpcontextaccessor 中读取它。
更多细节,您可以参考以下代码:
在 Startup ConfigureServices 方法中添加以下代码
services.AddHttpContextAccessor();
在控制器中添加以下代码以获取声明:
private readonly ILogger<HomeController> _logger;
private readonly IHttpContextAccessor httpContextAccessor;
public HomeController(ILogger<HomeController> logger, IHttpContextAccessor _httpContextAccessor)
_logger = logger;
httpContextAccessor = _httpContextAccessor;
public IActionResult Index()
var re= httpContextAccessor.HttpContext.User.Claims.ToList();
re.Select(x => x.Type == "Here type in the type of the claims like Email or else" ).FirstOrDefault();
return View();
【讨论】:
以上是关于Asp net core 和 Firebase 身份验证的主要内容,如果未能解决你的问题,请参考以下文章
带有 Angular 6 的 Asp.Net Core 2.1 中的 Windows 身份验证 - Chrome 连续登录提示
我应该如何保护我的 Web 应用程序(ASP.Net Core 3.1 MVC)?
Dora.Interception,为.NET Core度身打造的AOP框架 [3]:多样化拦截器应用方式
.NET Core 1.0ASP.NET Core 1.0和EF Core 1.0简介