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简介

Dora.Interception,为.NET Core度身打造的AOP框架 [1]:更加简练的编程体验

Dora.Interception,为.NET Core度身打造的AOP框架 [4]:与依赖注入框架的无缝集成