我计划构建一个用户管理 Java API 并将其部署在 Wildfly 中。 API 规范将使用 Swagger 完成。
然后我将使用 Wildfly + 应用程序创建一个 Docker 镜像,然后从该镜像在 AWS ECS(EC2 容器服务)上创建一个容器。
下一步是将 API 的 Swagger 规范导入 AWS API Gateway,并将请求转发到创建的 AWS ECS 容器。
我的问题。实现 OAuth2 服务器的最佳选择是什么:
- 在 Lambda 函数中创建它并将其用作 AWS API Gateway 中的自定义授权方?
在新的 Java 应用程序(在同一个或新的 Wildfly 容器上)上创建它,因此不使用 AWS API Gateway 的 Custom Authorizer 选项?这甚至可能吗,因为请求将从 AWS API 网关接收?我问这个是因为在尝试导入带有 OAuth2 安全实现的 Swagger 规范时,AWS API Gateway 出现以下错误:
由于 Swagger 文件中的错误,您的 API 未被导入。 “oauth”不支持安全定义类型“oauth2”。忽略。
附带说明一下,由于 API 的所有 future 客户端都将由我自己开发,我计划在我的 OAuth2 服务器上使用资源所有者密码凭证授予。
最佳答案
我假设您问题中的“Oauth2 服务器”是指验证 token 的东西。您没有说明您的应用是否真的在发行 token ,或者发行的是什么类型的 token 。
最佳选择可能是主观的,但我的偏好一直是使用自定义授权器,因为这是其他资源的可重用组件。
除了 Swagger 导入 API Gateway 之外,您可以根据需要在您的应用程序中管理授权,当收到新请求时,它只是您处理的第一件事,只需确保 API Gateway 中的授权 header 映射到往下游走。
关于java - AWS API 网关 + AWS ECS + OAuth2 密码授予,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43699483/