Я слежу за этим сообщением в блоге по аутентификации с помощью firebase с .net Core 2 https://blog.markvincze.com/secure-an-asp-net-core-api-with-firebase/
(я понимаю, что использую .net core 2.1, но думаю, что это должно быть похоже)
Я использую интерфейс React с .net core 2.1 WebApi Backend.
У меня нет проблем с контроллером, однако , как только я пытаюсь добавить аутентификацию в startup.cs Затем я получаю: Заблокированный запрос перекрестного источника: Политика одного источника запрещает чтение удаленного ресурса на локальном хосте: 4000 (Причина: запрос CORS не был выполнен)
До этой точки работает нормально
Мой запрос поступил от http://localhost:3000
ОБНОВЛЕНИЯ ------------------------------------------------------------------
Как примечание, это работает при использовании POSTMAN. Я могу аутентифицироваться с помощью Firebase И без проблем нажимать на контроллер
Также работает в Chrome.Кажется, проблема с браузером Firefox
Моя реализация (после успешного входа в Firebase)
Запрос Axios
axois
.get("https://localhost:4000/v1/picture", {
headers: {
accept: "application/json",
"Accept-Language": "en-US,en;q=0.8",
"Content-Type": `multipart/form-data;`,
Authorization: "Bearer " + localStorage.getItem("token")
//Is the above the correct way to pass a jwt to be authenticated backend? This is the full jwt returned by Firebase
}
})
Startup.cs
services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin",
builder => builder.WithOrigins("http://localhost:3000")
.AllowAnyMethod()
.AllowAnyHeader());
}
);
//https://blog.markvincze.com/secure-an-asp-net-core-api-with-firebase/
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Authority = "https://securetoken.google.com/mafirebaseapp";
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = "https://securetoken.google.com/mafirebaseapp",
ValidateAudience = true,
ValidAudience = "mafirebaseapp",
ValidateLifetime = true
};
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
...
...
app.UseCors("AllowSpecificOrigin");
app.UseAuthentication();
app.UseHttpsRedirection();
app.UseMvc();
}
PictureController.cs
[Route("v1/picture")]
public class PictureController : Controller
{
[Authorize]
[HttpGet]
public IActionResult GetPicture()
{
return Ok("Hi");
}
}
Я посмотрел на другой пост, который указал, что порядокметоды имели значение, поэтому я не думаю, что это проблема.
Любая помощь будет высоко ценится!
Спасибо!