我向客户提供网络服务.我想提供一项功能,在某些情况下,我会通过向客户提供的URL发送请求来通知客户.
例如,可以通过GET请求https://customer.example.com/order/12345?status=shipped发送订单发货通知
客户如何信任此请求是真实的?
当客户收到此请求时,他们需要验证请求是否真的来自服务,它是否未被篡改,并且是私有的.
我们只想到通过SSL发送给客户,但要求客户运行带有签名证书的启用SSL的Web服务器.另外,要对服务进行身份验证(此请求中的客户端)需要客户端证书.但是,SSL应该处理加密,中间人,消息签名和重放攻击.
服务的IP地址可以更改,因此不用于身份验证.
PayPal的IPN系统使用另一种方法. PayPal向客户(此示例中的商家)发送通知,然后客户通过SSL将有效负载发送回PayPal以进行确认.基本上问:“嘿,PayPal.你有没有把它寄给我?”
你能想到其他任何方法吗?