保护互联网上的遗产 API

Protecting a legacy API on Internet

我们有一份内部遗产 API 需要保护才能在 Internet 上使用。我们决定使用反向代理来提供 SSL 终止,但现在的问题是如何使用 OAuth 令牌来控制访问。

目前,由于各种原因无法修改应用程序,我无法在此处解释。我需要一些快速而肮脏的东西(但安全!)才能将 API 发布到 Internet。

我正在做一些研究,我有这个想法:使用 HAProxy 并编写一个 LUA 脚本来检查 header 中的 OAuth 令牌,并向不同的用户授予访问权限或不授予访问权限。我也在考虑使用 Apache 作为反向代理并编写一个模块来做同样的事情。

我担心的是性能和安全性...我是否采用了最佳方法?对于这个用例,你知道更好的吗?

如何在客户端应用程序(= API 调用者)和您的 API 之间放置一个 API 网关?例如,如果您使用 Amazon API Gateway 的自定义授权方,则可以将 OAuth 令牌的验证委托给外部授权方,并仅在成功验证 OAuth 令牌时才调用您的 API。在此架构中,您可以通过 OAuth 令牌保护您的 API,而无需修改 API.

的实现

不仅亚马逊,还有一些其他公司提供API管理/网关解决方案。例如Microsoft、CA Technologies等。

仅供参考:

  1. Introducing custom authorizers in Amazon API Gateway(亚马逊计算博客)
  2. Use Amazon API Gateway Custom Authorizers(AWS 文档)
  3. Amazon API Gateway Custom Authorizer + OAuth(作者)