我有一个用 C# 编写并托管在 Azure 中的 Web API,Azure API 管理 (AAM) 位于该 API 前面并限制请求。
调用 API 的客户端将基于 javascript,并将代表匿名最终用户进行调用。例如,网站的主页可能会通过 javascript 调用我们的 API 来向最终用户呈现信息,而无需要求他们登录。
AAM 确保 API 的调用者拥有有效的 API 密钥。如果有人从公开可见的来源获取此密钥,则该密钥有可能被复制和滥用。
是否可以在没有人工干预的情况下使用 OAuth2 获取 JWT 访问令牌并将其暴露在客户端上?
OAuth2 可以发出过期的 JSON Web 令牌,这将降低令牌被盗的风险,但我正在努力在没有任何人为干预的情况下实现这一目标。
OAuth2 主要是关于最终用户发起的授权,但 IdentityServer3 似乎有一种混合方法。我可以使用这种混合方法通过首先从服务器向服务器发送 API 密钥然后在网页中输出 JWT 以供客户端脚本使用来让远程 Web 服务器请求令牌吗?
然后,这将隐藏 API 密钥并仅显示使用几分钟的 JWT。
AAM 可以与 OAuth2 集成并检查 JWT 访问令牌,但我认为它不理解这个混合流(它可能不需要,因为我们不会要求用户登录)。
还是我应该只放弃和速率限制请求?