当用户注销(注销)应用程序时,网关如何与用户注销的所有服务通信?
换句话说,当用户登录到微服务体系结构应用程序时会发生什么?
发布于 2021-02-24 03:14:31
这是一个一般性的问题,我会给出我的个人想法。
让我们以一个页面应用程序为例,与多个Microservices对话,并通过验证令牌的网关进行保护。
当用户登录时,auth服务器提供的令牌存储在浏览器存储中(例如: localstorage)。
当用户注销时,不向Gateway或auth服务器发送通信,只需从浏览器存储中删除令牌即可。
因此,如果有人获得访问令牌,只要访问令牌不过期,它们就可以用于调用服务。
这就是为什么auth服务器提供了两个令牌,一个访问令牌和一个刷新令牌。用于保护apis的访问令牌会很快过期,可以使用一个过期时间更长的刷新令牌来获得新的访问令牌。
发布于 2021-02-24 04:56:14
由于您已经包含了JWT标记,所以我试图只考虑这一点来给出响应。JWT令牌是一个自给自足的编码令牌,包含某些属性,包括过期时间。唯一的目的是提供无状态身份验证。身份验证服务通常返回两个令牌,access_token和refresh_token。客户端将它们都存储在某个存储区中。访问令牌通常发出的时间非常短,因此客户端可以使用refresh_token,以便在后者到期时获得一个新的access_token。我们可以访问这些服务,直到refresh_token过期。之后,客户端必须经过身份验证过程才能获得新的令牌。万一用户从系统注销时,客户端应该从它的存储中移除两个令牌。因为在JWT中没有状态维护,所以服务器仍然可以接受旧令牌,直到它们未过期为止。
令牌的过期和完整性验证应在网关级别进行。
您可以避免使用服务令牌来服务通信,因为这些令牌是内部服务,并且运行在专用网络中,尽管在此级别上也可以进行同样的验证。
因此,在用户注销的情况下,用户的令牌应该从客户端删除,网关不应该与其他服务通信。在其他特殊情况下,令牌撤消是一种特殊情况,可以借助可扩展身份验证系统中的分布式缓存存储来处理。
发布于 2021-02-24 03:16:29
基于令牌的服务通常可以从令牌推断以下内容-
基于令牌的服务只是根据所提供的令牌接受或拒绝请求,而不管它是用户还是发出请求的机器。登录用户只是指可以执行该用户被授权执行的操作的人。令牌是这样一个用户的有限表示。
我的意思是,应用程序告诉用户他们已经登录(有一个令牌它仍然可以使用),或者注销(还没有令牌,或者过期)。这种令牌是通过使用用户名和密码对服务进行身份验证来获得的。
答案是基于我的知识,所以每个人,请指出错误,如果有的话。我不知道关于aws网关的细节,所以也许其他人可以向您简要介绍一下,以防它的工作方式不同。
https://stackoverflow.com/questions/66343675
复制相似问题