将 JWT 添加到 Spring 启动微服务
Adding JWT to Spring Boot Microservices
我目前在 aws 上有一个应用程序,它使用 spring 后端启动微服务和前端 ReactJS。
它目前的工作方式是用户使用用户名和密码登录,然后对帐户微服务进行提取调用。我在那里做了一个基本的用户名和 pw 检查 db 并发回真或假响应。
如果为 True,用户将登录并重定向到产品页面,在该页面上对产品服务进行提取调用以获取所有产品的列表。
现在想引入JWT授权,只有登录用户才能调用产品服务
我的问题是 - 我可以在我当前的帐户服务中引入它,还是我必须在这两个服务(目前它们共享一个负载平衡器)之前放置一些东西。或者,也许我需要通过帐户服务来引导产品服务流量?
此外,如果我可以在我的当前帐户服务中引入它,我如何共享产品服务所需的密钥以便它可以在请求进来时验证它?
干杯,克里斯
为了这个目的,通用方法是有一个 API 网关层,即只有一个微服务,它必须处理以下事情 -
- 执行身份验证任务并为用户生成 JWT 令牌
- 读取令牌解码后的角色和职责,每次用户调用授权目的
- 从这里获得用户的角色后,您可以在 API 网关中为每个服务创建路由,以检查他是否可以访问该功能,在您的情况下,假设用户的角色是“ warehouse Admin" 并且他有资格处理产品和相关信息,然后他可以访问产品服务,为此你可以在 API 网关层进行角色检查,当请求来自相关路由访问时到产品服务(比方说它的“/产品”)。因此,您仅在 API 网关层维护真实性检查。
- 或者在其他情况下,如果您还想维护帐户服务并负责身份验证和授权,那么您必须将来自 API 网关的调用定向到帐户服务并路由请求相关的后端服务,一旦响应从带有用户角色和权限的帐户服务到达。
我目前在 aws 上有一个应用程序,它使用 spring 后端启动微服务和前端 ReactJS。
它目前的工作方式是用户使用用户名和密码登录,然后对帐户微服务进行提取调用。我在那里做了一个基本的用户名和 pw 检查 db 并发回真或假响应。
如果为 True,用户将登录并重定向到产品页面,在该页面上对产品服务进行提取调用以获取所有产品的列表。
现在想引入JWT授权,只有登录用户才能调用产品服务
我的问题是 - 我可以在我当前的帐户服务中引入它,还是我必须在这两个服务(目前它们共享一个负载平衡器)之前放置一些东西。或者,也许我需要通过帐户服务来引导产品服务流量?
此外,如果我可以在我的当前帐户服务中引入它,我如何共享产品服务所需的密钥以便它可以在请求进来时验证它?
干杯,克里斯
为了这个目的,通用方法是有一个 API 网关层,即只有一个微服务,它必须处理以下事情 -
- 执行身份验证任务并为用户生成 JWT 令牌
- 读取令牌解码后的角色和职责,每次用户调用授权目的
- 从这里获得用户的角色后,您可以在 API 网关中为每个服务创建路由,以检查他是否可以访问该功能,在您的情况下,假设用户的角色是“ warehouse Admin" 并且他有资格处理产品和相关信息,然后他可以访问产品服务,为此你可以在 API 网关层进行角色检查,当请求来自相关路由访问时到产品服务(比方说它的“/产品”)。因此,您仅在 API 网关层维护真实性检查。
- 或者在其他情况下,如果您还想维护帐户服务并负责身份验证和授权,那么您必须将来自 API 网关的调用定向到帐户服务并路由请求相关的后端服务,一旦响应从带有用户角色和权限的帐户服务到达。