spring-boot - 用于 webhook 帖子的 Springboot 身份验证
问题描述
我需要在我的后端 api 服务器上验证来自第三方集成的 webhook 帖子。我唯一可以定义的是他们将调用的端点 url。一旦他们必须注册并且该过程需要3天,它就不能是动态的。而且我们使用多租户解决方案,因此我们必须在每次调用时使用不同的模式进行身份验证。
所以问题是我必须为这个 webhook 创建一个过滤器,所以我可以通过帖子正文的 json 中包含的值对其进行身份验证。
所以我定义了一个 WebSecurityConfigurerAdapter 并添加了一个 AbstractPreAuthenticatedProcessingFilter 以便我可以拦截请求,读取使用适当凭据进行身份验证的 json 正文中的值。
我遵循本教程在 Spring 中多次读取 HttpServletRequest,这样我就可以从请求中读取 InputStream 而不会删除它。
所以我的问题是两个。
1:有没有更好/更简单的方法可以存档这个结果?2:我想本教程遗漏了一些东西,因为当我尝试读取请求时(同样,在我已经在过滤器处读取之后)时,我在 servlet 处获得了空指针。
任何猜测将不胜感激,在此先感谢。
解决方案
我们是否可以知道哪个 3rd 方服务?例如,PayPal/Stripe 已经有文档来解释如何验证数据。
如果您可以将元数据/自定义字段添加到 webhook,例如,您可以对其进行签名。
至于检查签名/验证它,为什么不在@Contoller=>@Service 中执行此操作?
推荐阅读
- ios - 我可以向 UICollectionView 中的 customCell 添加操作吗?
- c# - 如何在 blazor 服务器端应用程序中扩展身份验证过程?
- c# - .NET Web 应用程序是否可以恢复未完成的下载?
- javascript - 数据在下一行消失
- r - 在R中的不同Excel工作表中附加不同列表的元素
- css - CSS Grid:具有动态行的复杂嵌套网格
- google-app-engine - 部署灵活的 GAE 需要 30 分钟以上
- python - 如何按特征重要性解释文本聚类结果?(DBSCAN)
- gcloud - 如何为 Google Cloud DNS 区域设置默认名称服务器?
- css - 更改 chart.js 中的白色单元格边框颜色