使用Http触发器接收Stripe Webhook的Azure函数应选哪种授权级别?
Azure函数监听Stripe Webhook的授权级别配置建议
保持AuthorizationLevel.Anonymous是正确的选择,原因如下:
- Stripe的Webhook请求无法携带Azure函数专属的授权密钥(比如function key、admin key),如果使用
function/admin/system/user这类需要密钥的授权级别,Stripe的请求会被Azure函数直接拦截,无法触发你的业务逻辑。 - 你代码中已经通过
EventUtility.ConstructEvent验证了Stripe签名,这是Stripe官方推荐的Webhook安全验证方式,足以确保请求来自合法的Stripe服务,避免伪造请求的风险,不需要依赖Azure函数的授权机制做额外防护。
额外安全建议:
- 确保
PlatformWebhookSecret存储在Azure环境变量或密钥保管库中,不要硬编码到代码里,进一步降低密钥泄露风险。
你的当前代码示例(已格式化):
public async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { var json = await new StreamReader(req.Body).ReadToEndAsync(); var platformWebhookSecret = Environment.GetEnvironmentVariable("PlatformWebhookSecret"); Event stripeEvent = EventUtility.ConstructEvent(json, req.Headers["Stripe-Signature"], platformWebhookSecret); // perform work... }
内容的提问来源于stack exchange,提问作者chuckd
相关产品推荐
相关产品推荐

