diff --git a/MareSynchronosServer/MareSynchronosServer/Authentication/SecretKeyAuthenticationHandler.cs b/MareSynchronosServer/MareSynchronosServer/Authentication/SecretKeyAuthenticationHandler.cs index 813f0ad..ff03a58 100644 --- a/MareSynchronosServer/MareSynchronosServer/Authentication/SecretKeyAuthenticationHandler.cs +++ b/MareSynchronosServer/MareSynchronosServer/Authentication/SecretKeyAuthenticationHandler.cs @@ -21,14 +21,21 @@ namespace MareSynchronosServer.Authentication protected override async Task 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();