cleanup of authentication

This commit is contained in:
Stanley Dimant
2022-06-29 23:08:44 +02:00
parent 3c2fac69c3
commit dd1a6e910e

View File

@@ -21,14 +21,21 @@ namespace MareSynchronosServer.Authentication
protected override async Task<AuthenticateResult> HandleAuthenticateAsync()
{
if (!Request.Headers.ContainsKey("Authorization"))
if (!Request.Headers.ContainsKey("Authorization") || !Request.Headers.ContainsKey("CharacterNameHash"))
return AuthenticateResult.Fail("Failed Authorization");
var authHeader = Request.Headers["Authorization"].ToString();
var charNameHeader = Request.Headers["CharacterNameHash"].ToString();
if (string.IsNullOrEmpty(authHeader))
if (string.IsNullOrEmpty(authHeader) || string.IsNullOrEmpty(charNameHeader) || charNameHeader == "--")
return AuthenticateResult.Fail("Failed Authorization");
var isBanned = await _mareDbContext.BannedUsers.AnyAsync(u => u.CharacterIdentification == charNameHeader);
if (isBanned)
{
return AuthenticateResult.Fail("Banned");
}
using var sha256 = SHA256.Create();
var hashedHeader = BitConverter.ToString(sha256.ComputeHash(Encoding.UTF8.GetBytes(authHeader))).Replace("-", "");
var user = _mareDbContext.Users.SingleOrDefault(m => m.SecretKey == hashedHeader);
@@ -38,18 +45,6 @@ namespace MareSynchronosServer.Authentication
return AuthenticateResult.Fail("Failed Authorization");
}
var charNameHeader = Request.Headers["CharacterNameHash"].ToString();
if (string.IsNullOrEmpty(charNameHeader) || charNameHeader == "--")
return AuthenticateResult.Fail("Requires CharacterNameHash");
var isBanned = await _mareDbContext.BannedUsers.AnyAsync(u => u.CharacterIdentification == charNameHeader);
if (isBanned)
{
return AuthenticateResult.Fail("Banned");
}
user.CharacterIdentification = charNameHeader;
_mareDbContext.Users.Update(user);
await _mareDbContext.SaveChangesAsync();