Команды исходящие проблемы Webhook HMAC не соответствуютC#

Место общения программистов C#
Anonymous
Команды исходящие проблемы Webhook HMAC не соответствуют

Сообщение Anonymous »

Я создал WebHook об исходящих командах.
URL -адрес обратного вызова указывает на контроллер на моем API, и я хотел бы использовать HMAC, предоставленный WebHook в заголовке запроса. />protected override async Task HandleAuthenticateAsync()
{
try
{
if (!this.Request.Headers.TryGetValue("Authorization", out var headerValue))
{
return AuthenticateResult.Fail("Authorization header not found.");
}

var sentKey = headerValue.ToString().Replace("HMAC ", null);

string requestBody = null;
using (var reader = new StreamReader(this.Request.Body, Encoding.UTF8))
{
requestBody = await reader.ReadToEndAsync();
}

if (string.IsNullOrWhiteSpace(requestBody))
{
return AuthenticateResult.Fail("No content to authenticate.");
}

var secretKeyBytes = Encoding.UTF8.GetBytes(this.Options.SecretKey);
using (var hmac = new HMACSHA256(secretKeyBytes))
{
var hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(requestBody));
var expectedSignature = WebEncoders.Base64UrlEncode(hash);

if (!string.Equals(sentKey, expectedSignature, StringComparison.Ordinal))
{
return AuthenticateResult.Fail("Invalid HMAC signature.");
}
}

var claimsIdentity = new ClaimsIdentity();
var ticket = new AuthenticationTicket(new ClaimsPrincipal(claimsIdentity), this.Scheme.Name);

return AuthenticateResult.Success(ticket);
}
catch (Exception ex)
{
return AuthenticateResult.Fail($"{ex.HResult}, {ex.Message}");
}
}


Подробнее здесь: https://stackoverflow.com/questions/754 ... t-matching

Вернуться в «C#»