Oauth 2.0 在SPA应用程序中保护无OAuth2客户端凭据流的Api调用

Oauth 2.0 在SPA应用程序中保护无OAuth2客户端凭据流的Api调用,oauth-2.0,asp.net-web-api2,single-page-application,Oauth 2.0,Asp.net Web Api2,Single Page Application,我有一个SPA应用程序,它向匿名用户提供统计数据和信息。它是一个react spa应用程序,将使用后端REST Web API(.net core)。这些数据不是特定于用户的,因此信息是免费的,不需要用户身份验证。但是,我不希望我的后端Api层暴露在互联网上(即不被匿名应用程序使用,如postman、rest客户端等)。我熟悉客户端凭证流(OAuth),但我不能将其用于此应用程序,因为此应用程序中没有用户登录的概念 我的最佳选择是什么,将访问我的API层的权限限制为匿名应用程序(如邮递员等),还

我有一个SPA应用程序,它向匿名用户提供统计数据和信息。它是一个react spa应用程序,将使用后端REST Web API(.net core)。这些数据不是特定于用户的,因此信息是免费的,不需要用户身份验证。但是,我不希望我的后端Api层暴露在互联网上(即不被匿名应用程序使用,如postman、rest客户端等)。我熟悉客户端凭证流(OAuth),但我不能将其用于此应用程序,因为此应用程序中没有用户登录的概念


我的最佳选择是什么,将访问我的API层的权限限制为匿名应用程序(如邮递员等),还是根本不可能?

您不能将客户端凭据流用于SPA。任何人都可以下载您的SPA,提取客户端id和密码,并使用它调用您的API


如果您不想对用户进行身份验证,那么就没有保护API的好方法。将您的SPA移动到托管在服务器上的传统web应用程序,以使用客户端凭据流对其进行保护。

如果不让通过邮递员或自定义代码进行API调用的用户访问公共客户端(您的SPA),则不可能让API对其进行访问。相反的做法是可能的,只是因为浏览器的限制

根据您试图实现的目标,您可以使用诸如reCAPTCHA之类的工具来验证API的用户是人类,而不是脚本。再加上人为的速率限制,可能会过滤掉大部分非应用程序用户