我们有一个 Mulesoft Cloudhub 环境,我们计划部署公共 API,我们还配置了一个 VPC,我们将在其中部署私有 API。
我正在研究如何最好地保护 API 并看到以下方法:
- 基本认证
- 客户 ID 和密码
- 身份验证
- LDAP
- SAML
我的问题是你什么时候应该使用每一个?他们的示例用例是什么?例如,OAuth 似乎比基本身份验证和客户端 ID 和机密更安全,那么为什么不一直使用 OAuth 而忘记其他两个呢?
谢谢
OAuth 更倾向于授权,而不仅仅是身份验证。
例如,OAuth 2 有许多针对不同用例的不同流程。例如 3 legged OAuth 允许您使用外部身份提供者允许用户被授权访问您的资源。在某种程度上,您根本没有执行任何身份验证。
Http basic 在简单的场景中仍然可以发挥作用,也许当使用其他东西的成本和/或努力不值得并且它是内部网络并且 OJ 已经有某种 ldap 或活动目录类型的东西用于其他应用程序时(并且在这里使用 SSL 非常重要,因为基本的身份验证凭据是纯文本)
对于客户端 ID 和密码,虽然它类似于用户名/密码,但它更多地体现在语义上——您信任的是客户端而不是拥有凭据的人。
例如,您可以使用客户端 ID 来验证实际客户端,例如移动应用程序或 Web 应用程序。像 MuleSoft 的 API 管理器这样的客户端 ID 实现还允许您添加诸如速率限制和基于 SLA 的速率限制之类的策略,这样您就可以限制特定的客户端应用程序不使您的 API 过载。
您可以将它与 OAuth 一起使用。用于访问 API 的客户端 ID/秘密,但用于授权最终用户的 OAuth。
这是一篇更详细的文章,讨论了各种常见 api 身份验证机制的优缺点,并提供了一个链接,可以在您的用例的各种 OAuth 流程之间进行选择。
https://nordicapis.com/3-common-methods-api-authentication-explained/