首页 > 解决方案 > 使用 oauth2 和 JWT 的无状态微服务架构

问题描述

我一直在研究使用 SpringBoot 和一些 netflix 库(如 Eureka、Zuul、Ribbon)开发微服务架构;但是,我似乎对安全设计很感兴趣。

我的目标是使用基于 Web 的第三方服务(例如Okta.com)来管理我的所有用户和应用程序。Okta 使用 Oauth2,我相信这会使我的应用程序有状态。我的目标是保持我的应用程序无状态以实现负载平衡。

我将使用以下服务模块架构,

Gateway Service 
Auth Service (Authenticate against Okta)
Microservice 1 (role_admin, role_sales)
Microservice 2 (role_admin, role_employee)

我的理解是,当网关请求路由到微服务 1 或微服务 2 时,需要将令牌与请求一起转发,如果不存在令牌,则需要按顺序向网关处的 Auth 服务发出请求使用 Oauth2 从 Okta 获取令牌。

我的下一个理解是在使用 oauth2 时,当令牌存在并且已经转发到微服务 1 或微服务 2 时,令牌需要再次针对 okta 进行验证。这些组将包含在令牌中。

我的问题是 Okta 是否可以仅用于身份验证和授权,而不是传递 Okta 生成的有状态 oauth2 令牌,而是创建一个包含角色和用户信息的无状态 JWT 并将其传递回微服务?

我只是想知道如何在微服务架构中使用像 Okta 这样的服务,但仍然保持我的微服务无状态,我不确定我的思考过程是否正确。

标签: oauth-2.0authorizationjwtmicroservicesokta

解决方案


推荐阅读