我们正在开发一种集成,允许外部第 3 方也调用我们的 API..
第三方控制我们的 API 应如何响应的治理,并规定当客户端使用丢失、无效或过期的 mTLS 证书进行调用时,我们必须返回 HTTP 403 错误。
请注意,这不是在浏览器场景中。我们在网络调用我们系统公开的 API 端点之外提供了一些描述的技术服务。
我们在 Azure 应用程序网关上实现了 mTLS 侦听器,并观察到其默认行为是返回 400 错误请求。
我们认为这是无法重新配置的,所以我可以检查一下这是一个共识吗?
但更根本的是,我希望了解在这种情况下我们是否应该强调 HTTP 错误代码行业标准方面的挑战。
从根本上来说,在这里发送 403 是错误的,但我很想为这种感觉添加一些证据。
您是对的,在 Azure 应用程序网关上实现 mTLS 时,处理与客户端证书相关的问题(例如证书丢失、无效或过期)的默认行为通常会导致 HTTP 400 错误请求响应。当应用程序网关无法根据 HTTP 响应代码正确协商相互身份验证时,这是应用程序网关的标准行为 - Azure 应用程序网关 |微软学习
在此场景中返回 HTTP 403 Forbidden 状态代码可能不符合标准做法。 HTTP 403状态一般用于表示服务器理解请求但拒绝授权,当客户端证书丢失或无效时则不是这种情况;相反,返回 400 状态更合适,表明由于客户端问题导致错误请求。
参考资料-