我有一个使用微服务架构实现的应用程序。有一个使用jwt标准的认证服务(A),在应用程序中还有其他服务,如S1,S2,S3等。现在例如S1接收请求,它应该验证令牌以查看用户是否被授权。验证可以通过以下方式实现:
我不是在问这些方法是如何工作的。问题是,哪一个更好?或者在这种情况下最佳做法是什么?
我建议将您的身份验证服务打包在另一个微服务中并与之通信以进行身份验证。 (基本上是你的第一选择。)
在微服务生态系统中,如果不是数百个运行(理想情况下)相互独立的应用程序,则可能有10个。使用第二个选项,每次启动新服务时都添加了样板。但也许更重要的是,您已将所有微服务与当前的身份验证方案相结合。最好将所有auth放在接口后面,并将所有auth逻辑隐藏在一个分开的位置。
我认为你需要考虑两种解决方案并考虑什么是权衡。
拥有单一服务处理授权:
对每项服务实施授权:
最后,您需要找到您的需求,并根据什么为您带来更多好处。我刚刚列举了一些优点和缺点,但我认为我的想法是在这个主题上投入时间,然后根据您认为最适合您团队的决定做出决定。