Мне не удается понять, почему мой пользователь никогда не проходит аутентификацию во внешнем интерфейсе.
Я делаю вызов API «Вход», где получаю токен jwt, сгенерированный во внутреннем интерфейсе. Я вручную сохраняю токен в файлах cookie.
Проблема возникает, когда мне нужно получить доступ к действию контроллера во внешнем интерфейсе (со страницы Razor) с помощью [Авторизовать] атрибут, и я никогда не смогу это сделать, поскольку пользователь не аутентифицирован.
Обязательно ли запускать httpContext.SigInAsyn()? Я видел некоторые приложения, в которых это не выполняется, но пользователь тем не менее каким-то образом аутентифицируется.
Что мне не хватает?
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/auth";
options.AccessDeniedPath = "/auth/accessdenied";
options.Cookie.IsEssential = true;
options.SlidingExpiration = true;
double expiresIn = 3600;
options.ExpireTimeSpan = TimeSpan.FromSeconds(expiresIn);
options.Cookie.Name = SConstants.JWT_COOKIE_NAME;
options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Strict;
});
// middleware
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
Что я делаю с токеном из серверной части:
HttpContext.Response
.Cookies
.Append(SConstants.JWT_COOKIE_NAME,
access_token,
new CookieOptions
{
HttpOnly = true,
Secure = true
});
Подробнее здесь: https://stackoverflow.com/questions/791 ... on-asp-net