Аутентификация при помощи кук и токена
На сайте есть 2 способа аутентификации. Первый для мобильного приложения через jwt токен, второй через веб интерфейс для админов.
Я не могу понять, почему не проходит аутентификация через куки. Вот мой код:
Startup:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "some",
ValidAudience = "some",
IssuerSigningKey = signingDecodingKey.GetKey(),
};
})
.AddCookie("Admin_Scheme", options =>
{
options.LoginPath = new PathString("/Admin/Auth/Login");
});
MyAuthService:
//default claims
var claims = new List<Claim>
{
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
new Claim(ClaimsIdentity.DefaultNameClaimType, user.Name),
new Claim(ClaimsIdentity.DefaultRoleClaimType, "Manager"),
};
//Permissions
var permissions = await _context.PermissonRoles
.Include(pr => pr.Permission)
.Where(pr => pr.IdRole == user.Role.Id)
.Select(pr => pr.Permission)
.ToListAsync();
//Fill data
foreach (var permission in permissions)
{
claims.Add(new Claim("Permission", permission.PermissionCode));
}
var claimsIdentity = new ClaimsIdentity(claims, "Token", ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType);
await HttpContext.SignInAsync("Admin_Scheme", new ClaimsPrincipal(claimsIdentity),
new AuthenticationProperties
{
ExpiresUtc = DateTime.UtcNow.AddMinutes(60),
IsPersistent = true
});
Если закомментировать часть кода, которая касается jwt аутентификация, через куки работает. Что делаю не так?