REST API:基于用户代理的客户端(应用)授权

REST API: user-agent-based client (app) authorization

本文关键字:客户端 应用 授权 用户代理 API REST      更新时间:2023-09-26

我有两个独立的网络应用程序:

  • 数据库接口
  • 和基本的Web客户端(Flask),带有一些JS代码(Knockout.js)用于交互式"即时"过滤产品、购物车等功能。

为了通过API实现交互式答案,我使用在用户浏览器中运行的JavaScript请求。我想控制对 API 的访问,并仅将其提供给授权的 Web 应用程序,例如,我自己的客户端 JS 代码。

我读到了HMAC和Oauth。关键点:例如,服务器和客户端共享用于生成 HMAC 的相同密钥。

但是,我应该如何使用密钥在用户的浏览器中生成 HMAC,而不将密钥暴露给其他人?据我了解,如果我的JS代码可以访问秘密,那么互联网上的任何人都可以访问该密钥,对吧?

JavaScript应用程序在OAuth 2.0中被称为"公共客户端"。这基本上意味着他们不能保守秘密,因此你不能做客户端(应用程序)授权。

因此,如果您使用 JavaScript 应用程序与您的 API 通信,则需要进行用户身份验证并授予用户对您的 API 的访问权限。或者切换到服务器端应用程序以访问您的 API。