private bool IsValidRequest(TwilioWebhookBindingModel twilioAuthenticationBindingModel) { var signature = twilioAuthenticationBindingModel.Headers[_twilioHeader]; var form = twilioAuthenticationBindingModel.Form; var requestUri = twilioAuthenticationBindingModel.DisplayUrl; return(_requestValidator.Validate(requestUri, form, signature)); }
public async Task ProcessSmsResponseWebHookHttpTriggerOrchestrator([HttpTrigger(AuthorizationLevel.Anonymous, "POST", Route = "smsWebHook")] HttpRequest httpRequest, [DurableClient] IDurableOrchestrationClient client, ILogger log) { var bindingModel = new TwilioWebhookBindingModel { Body = await httpRequest.ReadAsStringAsync(), DisplayUrl = UriHelper.GetDisplayUrl(httpRequest), Form = httpRequest.Form.ToNameValueCollection().ToDictionary(), Headers = httpRequest.Headers.ToDictionary(k => k.Key, v => v.Value.ToString()) }; await client.StartNewAsync(BugrReminderApiFunctionNames.ProcessSmsResponseWebHookOrchestrationTrigger, bindingModel); log.LogInformation($"Begun {BugrReminderApiFunctionNames.ProcessSmsResponseWebHookOrchestrationTrigger}"); }
public async Task <bool> AuthenticateWebHookRequest(TwilioWebhookBindingModel twilioAuthenticationBindingModel) { var twilioAuthToken = await _secretClient.GetSecretValueAsync(_secretKeySettings.TwilioAuthToken); _requestValidator = new RequestValidator(twilioAuthToken); var isNotValidRequest = !IsValidRequest(twilioAuthenticationBindingModel); if (isNotValidRequest) { throw new SmsWebHookAuthenticationException("Unable to authenticate webhook request"); } return(true); }