我目前在aws上有一个应用程序,后端使用spring-boot微服务,前端使用reactjs。
它目前的工作方式是,用户使用用户名和密码登录,然后对帐户microservice进行获取调用。在那里,我做了一个基本的用户名和密码检查与数据库和发回一个正确或错误的回应。
如果为true,则用户将登录并重定向到products页,在该页中对product service进行获取调用以获取所有产品的列表。
我现在想介绍jwt授权,这样对产品服务的调用只能由登录的用户进行。
我的问题是-我是否可以在我的当前帐户服务中引入它,或者我是否必须在这两个服务前面放置一些东西(目前它们共享一个负载平衡器)。或者我需要通过客户服务来引导产品服务的流量?
另外,如果我可以在我的当前帐户服务中引入它,那么我如何共享产品服务所需的密钥,以便它可以在请求进入时验证请求?
干杯,克里斯
1条答案
按热度按时间eit6fx6z1#
为此,通用的方法是有一个api网关层,即一个只需处理以下事情的微服务-
执行身份验证任务并为用户生成jwt令牌
每次用户出于授权目的进行呼叫时,在解码令牌后读取角色和职责
一旦你从这里得到了用户的角色,你可以在api网关中为每个服务创建路由,以检查他是否可以访问该功能,在你的情况下,假设用户的角色是“仓库管理员”,他有资格处理产品和相关信息,然后他可以访问产品服务,为此,当请求来自与产品服务(比如它的“/products”)相关的路由时,您只能在api网关层执行角色检查。因此,您只在api网关层维护真实性检查。
或者在其他情况下,如果您希望维护帐户服务并负责进行身份验证和授权,则必须将api网关的调用定向到帐户服务,并将请求路由到相关的后端服务,一旦响应从承载用户角色和权限的帐户服务到达。