在仅从其他应用程序接收数据的 Web API 中使用啥类型的身份验证

Posted

技术标签:

【中文标题】在仅从其他应用程序接收数据的 Web API 中使用啥类型的身份验证【英文标题】:What type of authentication to use in a Web API that only receives data from other applications在仅从其他应用程序接收数据的 Web API 中使用什么类型的身份验证 【发布时间】:2021-05-14 06:35:49 【问题描述】:

我正在使用 .NET 5 开发 Web API。 API 只会从其他应用程序中的服务接收数据。没有用户界面连接到 API。

我想为我的 WEB API 实施身份验证,我想知道用于此类应用程序的身份验证类型?另外值得一提的是,最终用户永远不会输入用于与 API 通信的凭据。

我查看了基本身份验证、JWT 和 OAuth。在这种情况下,哪个是最佳选择?为什么?

【问题讨论】:

【参考方案1】:

即使您只有其他应用程序与您的 API 通信,OAuth 也是一个不错的授权选择。客户端凭据流是为此类情况创建的 - 不涉及用户。尽管如此,您仍将获得可用于访问您的 API 的安全访问令牌。

即使您决定使用 OAuth 和客户端凭据,您也必须决定如何对应用程序(客户端)进行身份验证。基本身份验证很好,但如果您需要更安全的东西,您可以使用双向 TLS,如果客户端必须出示证书来验证自己。 mTLS 还可以为您提供创建发件人约束访问令牌的额外好处。因此,只有最初收到访问令牌的客户端才能使用它来访问您的 API(即使有人设法窃取了您的访问令牌,他们也无法使用它)。

您可以查看这些文章,其中更多地讨论了differences in API authorization and authentication techniques 和API security best practices。

【讨论】:

以上是关于在仅从其他应用程序接收数据的 Web API 中使用啥类型的身份验证的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET Core Web API 中使用 LINQ 仅从数据库中获取最新的 id?

在 ASP.NET Core Web API 中一起接收文件和其他表单数据(基于边界的请求解析)

如何在Asp .Net Web API中的请求的整个生命周期中使类对象可用?

如何在 Swift iOS 中使 web 视图不可点击

从 ASP.NET MVC Web API 中的多个表单数据键接收文件

Web API OWIN 从 $.AJAX POST withCredentials:true 接收空数据