验证微服务架构的每个服务中的访问令牌(JWT)

Ham*_*eji 6 architecture cloud authentication rest microservices

我有一个使用微服务架构实现的应用程序.有一个使用jwt标准的认证服务(A),在应用程序中还有其他服务,如S1,S2,S3等.现在例如S1接收请求,它应该验证令牌以查看用户是否被授权.验证可以通过以下方式实现:

  • 将令牌从S1发送到A,然后A验证令牌并将结果发送到S1(这是一种开销)
  • 验证S1内的令牌(这是每个服务中的重复操作,还需要每个服务中的密钥或公钥/私钥,用于签名/验证)

我不是在问这些方法是如何工作的.问题是,哪一个更好?或者在这种情况下最佳做法是什么?

小智 3

我建议将您的身份验证服务打包在另一个微服务中,并与其通信以进行身份​​验证。(基本上是你的第一个选择。)

在微服务生态系统中,您可能有 10 个甚至数百个应用程序(理想情况下)彼此完全独立地运行。使用第二个选项,您每次启动新服务时都添加了样板。但也许更重要的是,您已将所有微服务耦合到当前的身份验证方案。最好将所有身份验证放在一个界面后面,并将所有身份验证逻辑隐藏在一个单独的位置。