我试图创建一个Spring微服务项目,它使用Jwt Bearer令牌。我发现了这个有趣的资源:https://springframework.guru/jwt-authentication-in-spring-microservices-jwt-token/.
这里的问题是,我没有看到它与Spring Security一起实现。我一直在思考代码,我意识到这是一个很好的替代方法(即使在生产中),可以不使用Spring Security进行身份验证。
这是正确的吗?在没有Spring Security的情况下为应用程序提供这种类型的保护在逻辑上是正确的吗?
此外,我还想到了以下模式:
- CoreAuthorizationService =〉包含所有的User、Roles、User_Roles存储库,以及具有实际登录/注册实现的服务。
- AuthService =〉包含授权的控制器,该控制器调用CoreAuthorisationService中定义的函数(我在pom.xml文件中添加了coreAuthorisationService)
1.包含过滤器类的任何其他服务=〉
2条答案
按热度按时间j2qf4p5b1#
如果您只需要JWT身份验证,那么这样做是完全有效的,但是spring security提供了比身份验证更多的安全特性,例如,一个常见的特性是授权,它允许您保护端点或方法,使其只能由具有足够权限的用户调用(例如使用
@PreAuthorize
),以及其他功能,如CORS支持、HttpFirewall和CSRF支持等。因此,如果您现在只需要进行JWT身份验证,没有问题,继续进行。当您需要spring-secrutiy已经提供的额外功能时,考虑迁移到springsecurity,而不是重新发明轮子。
cczfrluj2#
是的,也不是。
是的,因为Spring Security以不必要的复杂而闻名,所以一些团队完全避免了它,并为auth编写了自定义代码。在过去的5年左右的时间里,我参与的大多数brownfield项目都完全避免了Spring Security。
不,因为那样的话您可能无法使用Spring Security 1(https://docs.spring.io/spring-security/reference/servlet/authorization/index.html) 2(https://docs.spring.io/spring-security/reference/servlet/authorization/method-security.html)提供的许多便利特性。