保护客户端最终用户调用的API

时间:2019-02-27 08:48:51

标签: rest api security authentication oauth-2.0

我正在构建一个打算出售给各种客户的API。这些客户将获得一个API密钥或类似的东西,他们将在其网站的小部件中使用该API。

客户网站的最终用户必须能够匿名使用小部件(无需登录)。

工作流程:

enter image description here

我当前的想法是让客户端的服务器检索一个临时密钥并在网页中使用它。最终用户的浏览器将使用该临时密钥来调用我们的API。

有什么理由不是一种好的做法和/或不安全的方法?

还是有更好的良好实践解决方案?我可以为此使用OAuth 2吗?

1 个答案:

答案 0 :(得分:1)

您需要从客户端应用中保护API。因此,为此,您可以将OAuth 2与“客户端凭据”授予类型一起使用,并将每个客户端设置为应用程序,以便它们各自获得自己的一组密钥/秘密凭据。

由于您对最终用户一无所知,但仍然需要对其进行跟踪,因此在对API的每个请求中都需要一个endUserId自定义标头,而您只需要信任客户端即可为您提供有效的ID供发出请求的最终用户使用。

要设置OAuth,请使用现有的库或OAuth服务。我不建议自己写。如果您可以花一些钱,OktaAuth0是不错的选择。如果您的API使用.net编写,则可以使用IdentityServer作为免费选项。