大家下午,
只是想找人仔细检查我的工作。以下是保护微服务的有效方法吗?
前提
将我们的单体应用程序和单体合作伙伴 API 分解为面向特定业务功能的微服务。它们很可能是在弹性 beantalk 上运行在 docker 容器中的小型 expressjs 应用程序,谁知道呢。他们会住在某个地方:)
我正在考虑将Kong作为我的 API 网关,或者使用 AWS API 网关来封装我的微服务的细节。此外,它只是感觉很好。
Kong的JWT 插件将验证 JWT 的签名,然后将customer_id
标头中的签名传递给微服务。我还应该提到,我们也有第 3 方开发人员,他们也将参与到集成的乐趣中。这是我所看到的情况的基本草图:
执行
- 为我们拥有的每个平台和第 3 方开发人员生成“消费者”。(Web 应用程序、移动应用程序以及我们目前拥有的集成合作伙伴。注意:我不希望为每个登录的用户创建消费者。虽然肯定更安全,但这会增加很多工作。另外,如果你弄清楚如何从我的 API 网关中获取秘密我显然还有其他问题)
- 让Kong为我验证请求。有点像门口的保镖,没有授权,只是身份验证。
- 我不需要知道令牌到达微服务后是否有效,我可以使用一些中间件对其进行解码并使用自定义逻辑来决定该用户是否真的应该做他们想做的任何事情。
额外的东西
Kong 有一个不错的访问控制插件。我们的应用程序和移动应用程序将以“上帝”特权运行,但我绝对可以将开发人员锁定在特定的路线和方法上。
撤销 3rd 方访问权限将很容易,撤销最终用户访问权限不会那么简单,除非我愿意通过生成一个新的秘密来一次使所有 JWT 无效。也许我可以将令牌时间限制在 10 分钟左右,并让我们的应用程序检查它们是否已过期,获取新令牌,然后继续处理原始请求。这样我可以在数据库或其他东西中“标记”它们,而不是让 JWT 生成。
SSL 无处不在,JWT 存储在 Web 浏览器中的仅 SSL cookie 中,并且在任何声明中都没有存储敏感信息。
多谢你们。