spring-security 在多个微服务之间使用JWT进行身份验证[已关闭]

prdp8dxp  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(149)

已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新问题,以便editing this post可以用事实与引用来回答.

两个月前关门了。
Improve this question
我有一份申请
1.前端角组件
1.登录服务-验证用户名和口令并提供JWT标记(服务A)
1.预订门票服务-保存/检索有关门票预订的数据
注意事项:
登录和预订服务有自己的数据库。
未使用API网关
流量:
前端<->/authenticate(ServiceA)<->验证登录数据库上的凭据并返回JWT标记。
在此调用之后,我将通过传递在上一步中创建的JWT来要求对Book Tickets服务进行身份验证,但是在不将LoginDB连接到Book Tickets服务的情况下,如何才能做到这一点呢?
我希望做的事情(但不确定它们是否是好的做法):
1.在LoginService“/isValidUser”中创建一个端点,并每次从Book Tickets服务调用此端点。
1.通过Login服务路由所有Book票证服务端点,以便验证JWT并转发请求。
1.让BookTicket服务访问LoginDB,并在此服务本身中实现JWT验证。
真的很感谢你的建议。

ct3nt3jp

ct3nt3jp1#

在微服务体系结构中,大多数情况下一个服务使用标准接口或Web API与另一个服务进行通信。
在您的情况下,您需要LoginService是正确的,它具有以下职责。

  • 验证身份证明(用户名、口令)并返回JWT标记。
  • 现在,前端将使用此令牌与后端或其他服务(如BookTicket Service等)进行通信。
  • 令牌有效

现在订票服务有以下职责。

  • 预订机票。

Booking Ticket的可能流程如下所示。

  • /bookingservice/BookTicket(包含所有数据)
  • 此外,JWT标记传入标头。
  • BookTicket服务将接收请求,并从标头中提取令牌。
  • 它将令牌传递给登录服务以验证令牌是否有效。
  • 如果有效,则可以执行订票。

如果您允许BookTicket Service访问Login Service数据库,则微服务的整体目的将不存在。因为一旦Login Service数据库中有一些更改,您也必须更改BookTicket Service。

  • 对于小项目,比如一旦你正在创建,那么你不会在很长一段时间内改变,那么它可能是好的,但在微服务的目的是不存在的。

相关问题