我正在构建一个API,旨在出售给各种客户。这些客户端将获得一个API密钥或类似的东西,他们将在其网站上的小部件中使用API。
客户网站的最终用户必须能够匿名使用该小部件(无需登录)。
工作流程:

我现在的想法是让客户端的服务器检索一个临时密钥,并在网页中使用它。最终用户的浏览器将使用该临时密钥来调用我们的API。
这不是一个好的实践和/或不安全的原因吗?
或者是否有更好的良好实践解决方案?例如,我可以使用OAuth 2来做这件事吗?
发布于 2019-02-28 05:05:10
您需要从客户端应用程序保护您的API。因此,您可以使用具有客户端凭据的OAuth 2授予类型,并将每个客户端设置为一个应用程序,以便每个客户端都获得自己的密钥/秘密凭据集。
由于您对最终用户一无所知,但仍然需要跟踪他们,因此在对您的应用程序接口的每个请求上都需要一个endUserId自定义头,并且您只需要信任客户端为发出请求的最终用户提供一个有效的id。
要设置OAuth,请使用现有的库或OAuth服务。我不推荐你自己写。如果你能花点钱,Okta和Auth0是不错的选择。如果您的应用编程接口是用.net编写的,您可以免费使用IdentityServer。
https://stackoverflow.com/questions/54901371
复制相似问题