spring-boot - 是否有第三方服务可以进行 api 密钥管理,同时不需要用户在 GCP 上创建帐户?
问题描述
如果我想创建一个公共 api,我很确定我需要某种第三方供应商来管理 api 密钥身份验证,因为替代方案将是效率低下的东西,例如字母数字生成器和检查密钥数据库。
我正在对 Cloud Endpoints 作为一种潜在的解决方案进行一些研究,因为它可以处理 api 密钥,但根据他们的文档,任何潜在用户都需要一个专门注册到我的 api 的 GCP 项目才能获得 api 密钥。这很愚蠢,因为进行 api 注册的正确方法不是强迫甚至可能不使用 GCP 的人创建帐户。
那么是否有任何服务,无论是来自 Google 还是其他人,都允许我自行决定生成和管理 api 密钥(因此我决定用户如何注册 api 密钥并控制其支付)也有一个干净的验证解决方案,我可以为 Spring Boot api 实现吗?
编辑:我应该澄清所述虚构服务可以提供的一些功能,这些功能可能会重新发明轮子以手动实现。
速率限制,以锁定任何太快发出过多请求的 API 密钥
使用限制,比如每天 N 个请求或类似的东西
密钥认证的效率,以确保 api 本身的性能
确保密钥的唯一性
允许从一个角度应用程序按需创建和终止密钥
如果您的 API 需要 API 密钥,您必须向 API 用户提供您在其中创建 Cloud Endpoints 服务的项目中的密钥,或者您可以让用户在他们自己的 Google Cloud 项目中启用您的 API 并创建 API 密钥。
我也注意到了这种措辞,因此它不是完美的解决方案,但如果有办法通过代码完成此任务,我可以考虑使用 Cloud Endpoints。如果有一种方法可以为我的 GCP 项目自动创建 + 分发 api 密钥作为一种 hacky 解决方法,那肯定是一个解决方案。
目前,我能找到的关于该操作的唯一说明是通过 UI 手动操作,但这是不可行的。
解决方案
Google Cloud 上的Apigee可能是您想要研究的。它有许多带有指南的解决方案:
此外,如果您愿意,还可以使用 Apigee 进一步扩展 API 以实现盈利。
推荐阅读
- java - 使用 gson 将 java 对象转换为 json
- python - FacetGrid 中的 lmplot 出现意外的关键字错误
- javascript - 使用 Puppeteer 抓取多个图像 URL
- javascript - 在 nativescript 中渲染 dom 的一部分
- c# - UWP中数据网格的中心列标题
- node.js - 为什么在猫鼬中使用 populate() 时会收到强制转换错误?
- python - 出于某种原因,PyGame 物理模拟所有物体都以相同的速度移动
- angular - 如何获取使用 ngfor 循环创建的 html 元素
- dart - 在 dart 中使用 async/wait 不等待 http 包
- pytorch - 如何解决 PyTorch 训练期间的类不平衡问题