Чтобы не хранить Jwt в браузере, я храню jwt внутри файла cookie, настроенного так:
`
HttpOnly = true,
SameSite = SameSiteMode.Strict,
IsEssential = true
`
Затем я запускаю перехватчик как часть моего конвейера запросов и проверяю, есть ли во входящем запросе cookie-файл, если он есть, затем я удаляю cookie-файл и добавляю заголовок "Authorization"
к запросу с содержимым печенье, которое является самой JWT.
Эти конфигурации cookie отлично работают на моей локальной машине в процессе разработки. Однако, как только я разверну приложение в Azure. Веб-API больше не выдает эти файлы cookie.
В моем файле Api Startup.cs
веб-интерфейса Asp.Net Core у меня есть следующий метод ConfigureServices
:
`
services.ConfigureApplicationCookie(options =>
{
options.Events.OnRedirectToAccessDenied = ReplaceRedirector(HttpStatusCode.Forbidden, options.Events.OnRedirectToAccessDenied);
options.Events.OnRedirectToLogin = ReplaceRedirector(HttpStatusCode.Unauthorized, options.Events.OnRedirectToLogin);
options.SlidingExpiration = true;
});
`
`
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(configureOptions =>
{
configureOptions.ClaimsIssuer = jwtAppSettingOptions[nameof(JwtIssuerOptions.Issuer)];
configureOptions.TokenValidationParameters = tokenValidationParameters;
configureOptions.SaveToken = true;
// In case of having an expired token
configureOptions.Events = new JwtBearerEvents
{
OnAuthenticationFailed = context =>
{
if (context.Exception.GetType() == typeof(SecurityTokenExpiredException))
{
context.Response.Headers.Add(TokenOptionsStrings.ExpiredToken, "true");
}
return Task.CompletedTask;
}
};
});
`
Тогда в моем Configure.cs
файле:
`
app.UseMiddleware<JwtBearerMiddleware>()
.UseCors("AllowAll")
.UseAuthentication()
.SeedDatabase()
.UseHttpsRedirection()
.UseMvc();
`
Затем я успешно выдаю куки при успешной регистрации:
`
response.Cookies.Append(cookieName, token.access_token, _cookieOptions);
`
Где _cookieOptions
такие же, как указано выше.
Есть идеи, почему мои cookie-файлы могут не появляться при развертывании в Azure?