我正在尝试与支付服务进行新的集成。计费信息更改后,我应该在Azure功能上收到来自支付服务的回调。服务文档说,他们的请求是用相互tls身份验证的证书签名的。但是webhook回调没有到达我的Azure功能。该服务的支持团队表示,他们所有的请求都以这个错误结束;本地错误:tls:没有重新协商"。
对于测试,我只制作了一个函数来接收请求并将内容发送到Azure服务总线队列:
[FunctionName("Callback")]
public async Task<IActionResult> Callback([HttpTrigger(AuthorizationLevel.Anonymous, "get" , "post" , "put")] HttpRequest req, ILogger log)
{
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
try
{
var objeto = JsonConvert.DeserializeObject<object>(requestBody);
ServiceBusClient client = new(Environment.GetEnvironmentVariable("ServiceBusConnectionString"));
ServiceBusSender Sender = client.CreateSender(Environment.GetEnvironmentVariable("QueueName"));
ServiceBusMessage message = new(objeto.ToString());
await Sender.SendMessageAsync(message);
}
catch (Exception e)
{
log.LogError(e, e.Message);
}
return new OkResult();
}
然后发布Azure功能,并将客户端证书模式设置为Require。
当我从Postman发出请求时,Function运行得很好,但支付服务提供商得到了tls:没有重新协商错误。
我已经进行了一些搜索,但无法掌握我需要做什么才能正确接收webhook请求。有人能告诉我我缺了什么吗?
我已经按照下面链接中的步骤进行了操作,现在它正在工作:
https://hafizmohammed.medium.com/configuring-client-certificates-on-iis-95aef4174ddb