处理微服务和用户之间的访问和授权的最佳方法是什么?
我正在构建一个关于微服务架构的应用程序。服务通过REST相互通信。有些端点只能由其他微服务访问,而不是由用户直接访问,某些端点是公共端点,有些端点需要用户注册或具有管理员权限。最重要的是,用户将拥有管理员和普通用户等角色。
我正在试图弄清楚Oauth2和范围是否是我想要实现的目标的最佳方法。例如每个微服务都将拥有对“service1-place-order”等特定范围具有权限的“用户”。
答案 0 :(得分:0)
是的,Oauth2是正确的方法
您必须实现一个授权服务器,该服务器将授予您访问令牌,并且您将在此授权服务器中注册客户端,用户和范围,您的微服务将作为资源服务器,您希望向某些用户公开的端点某些特权将使用@preauthorize(hasScope('readThis')&& hasAuthority('admin')进行注释,类似地,您可以限制其他端点,资源服务器将使用auth服务器验证令牌,因此您必须维护inMemoryTokern存储或者jdbc令牌存储,
如果您想要访问令牌中的某些信息,比如组织等,也可以实现jwt,这样您还可以节省从资源服务器到auth服务器的额外调用以验证令牌,并且您不必将令牌存储在inmemory或jdbc商店