Cześć, jakoś tak nie za bardzo czuję, jak poprawnie wylogować użytkownika. Cała sesja przebiega za pomocą JWT i to jest robione tak:
- użytkownik podaje login i hasło - to leci do serwera POSTem
- serwer sprawdza, czy hasło jest poprawne:
signInManager.PasswordSignInAsync
- następnie wydawany jest token:
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(config["JwtKey"]));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
issuer: config["JwtIssuer"],
audience: config["JwtIssuer"],
claims: claims,
expires: DateTime.Now.AddMinutes(15),
signingCredentials: creds);
return Ok(new
{
token = new JwtSecurityTokenHandler().WriteToken(token),
expiration = token.ValidTo
}
);
I teraz szukając informacji w necie o wylogowaniu nie znajduję niczego konkretnego. Wg tego, co sobie wymyśliłem, to wystarczy, że wylogowanie robię jedynie po stronie użytkownika - usuwając token z headera. Czy to faktycznie wystarczy, czy powinienem zrobić coś jeszcze po stronie serwera?
Drugie moje pytanie odnosi się typowo do logowania. Jak napisałem, login i hasło użytkownika idą POSTem do serwera. To jest czysty tekst. Czy jeśli będę miał SSL, to on mi załatwi całą sprawę bezpieczeństwa, że nikt nie będzie mógł podejrzeć sobie tego hasła? Czy może powinienem sam w jakiś sposób zakodować te dane przed wysłaniem i rozkodować je po stronie serwera?