第三方服务提供商公开了我们需要在后端集成的支付 API。
作为传输通信,我们将使用带有客户端证书的 TLS 并通过 MPLS 专用网络使用此 API。
作为认证框架,第三方建议使用Oauth2;
相反,我建议使用 APIKey/ClientSecret 之类的“轻量级”身份验证。
为什么?
因为,根据我的“有限”经验,我看不出在这种情况下使用 Oauth2 有什么好处。
- Api 将仅由我们的后端使用的一个服务用户使用。
- 我们没有任何级别的授权(没有索赔)。
- 在 Oauth2 中,为了保护凭证,您使用它们只是为了获取访问令牌并使用它对 API 进行身份验证;在我们的场景中,凭证不是个人凭证,而是第三方 API 提供商提供的单一服务凭证。从我的角度来看,泄露它们就像泄露 APIKey。
- 如果出现一些安全漏洞,您只需撤销 APIKey;拥有 Oauth2,您必须撤销刷新令牌,使授予的访问令牌仍然有效。
- 这将迫使我们创建一些实用程序库(基于 Restsharp)和数据库表来处理 Oauth2 协议强加的所有来回。我在其他项目中看到的一件事是,在并发访问的情况下,这个库需要“同步”。
可能我遗漏了一些重要的点,而且我的过度简化在支付 API 等关键服务中是不可接受的。
根据您的经验,在这种特定情况下,Oauth2 是否比“基本身份验证”有一些优势?