我正在开发应用程序使用微服务架构。需要实施安全措施。
因此,我计划使用3项服务来实现这一目标。
Step1:客户端向API网关发送用户名和密码以获取令牌。如果API网关是有效的API网关,则应调用用户服务来验证网关并将其发送给客户端。
Step2:客户端尝试使用令牌( API网关在Step1中发送的令牌)访问订单服务,因此API网关必须调用Users来验证令牌。
我正在考虑在我的API网关微服务中拥有所有授权和身份验证逻辑。因此,当我从API网关的使用者那里获得JWT令牌时,我应该调用 user Service来根据用户名和密码验证它,因为我将所有与用户相关的数据存储在用户服务中。
我相信这将是实现微服务体系结构安全性的更好方法之一。
如果有更优雅的方法,请提出建议。
提前谢谢。
发布于 2021-03-07 10:28:23
我认为你走在正确的道路上。但是,取决于每个操作的用户服务,使用户服务成为可能的单一故障点,其他服务的可用性将取决于用户服务。
请阅读更多关于服务熔断器反模式的信息:https://akfpartners.com/growth-blog/microservice-anti-pattern-service-fuse
对于第一个身份验证调用,将带有用户名和密码的身份验证委托给用户服务是有意义的。但是对于其他调用,您只需在API网关上验证JWT。
我建议使用公钥加密技术对JWT进行签名,这样您就可以在用户服务上用私钥对JWT进行签名,并将公钥部署到API网关进行验证。这样,API网关或任何其他服务都可以在不需要敏感共享秘密的情况下验证令牌。
https://stackoverflow.com/questions/66503372
复制相似问题