如何使用JWT和Kubernetes设置Spring后端

时间:2019-04-02 15:34:46

标签: spring docker kubernetes jwt microservices

我实现了一个Spring后端,该后端负责存储不同的数据(用户,讲座等)。该后端由JWT保护,一切正常。对于我的研究,我想增强后端,现在我想使用微服务架构而不是整体架构。为此,我有使用Docker和Kubernetes的要求。我经常阅读写在我想在微服务体系结构中使用JWT时需要授权服务器和资源服务器的文章。那是对的吗?我是否需要网关(例如Zuul)用于我的目的?有人可以帮助我构建项目并为技术堆栈提供建议吗?最后,整个项目将在单个服务器上运行。

我实现了一个由JWT保护的多态后端。

1 个答案:

答案 0 :(得分:0)

Kubernetes正式通过authentication工具使用OAuth 2.0协议对JSON Web令牌(JWT)中的API服务器支持OpenID Connect,以识别用户请求。但是,这仅代表Authorization模型的一部分,该模型确定如何通过适当的安全策略或角色来授予已认证用户以管理Kubernetes集群资源。

为了将应用程序构建或迁移到Kubernetes,您可能考虑将应用程序暴露在集群之外,为此Ingress通过匹配请求路径将请求代理为确切的服务。实际上,Ingress是一个逻辑资源元素,它描述了一组通过Ingress Controller进行流量管理的规则。因此,Ingress控制器可以通过提供L7网络功能来发挥API网关的作用,这些功能包括:负载平衡,SSL终止和用于嵌套应用程序服务的HTTP / HTTPS流量路由。

正如您所提到的,Zuul网关可以作为Kubernetes集群前面的边缘代理服务的选项之一,但是我建议您寻找一些面向Kubernetes的解决方案。 Istio是一个很好的例子,因为它通过其核心Service mesh设计,可以很容易地集成到Kubernetes集群中,从而带来了广泛的网络路由器功能。 Istio通过声明的身份验证policy中的JWT提供最终用户身份验证。

或者,您也可以通过宣布的JWT身份验证来使用Nginx plus功能。