首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微服务架构(基于令牌的)中的所有服务如何知道用户已注销?

微服务架构(基于令牌的)中的所有服务如何知道用户已注销?
EN

Stack Overflow用户
提问于 2021-02-24 02:07:45
回答 3查看 503关注 0票数 0

当用户注销(注销)应用程序时,网关如何与用户注销的所有服务通信?

换句话说,当用户登录到微服务体系结构应用程序时会发生什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-02-24 03:14:31

这是一个一般性的问题,我会给出我的个人想法。

让我们以一个页面应用程序为例,与多个Microservices对话,并通过验证令牌的网关进行保护。

当用户登录时,auth服务器提供的令牌存储在浏览器存储中(例如: localstorage)。

当用户注销时,不向Gateway或auth服务器发送通信,只需从浏览器存储中删除令牌即可。

因此,如果有人获得访问令牌,只要访问令牌不过期,它们就可以用于调用服务。

这就是为什么auth服务器提供了两个令牌,一个访问令牌和一个刷新令牌。用于保护apis的访问令牌会很快过期,可以使用一个过期时间更长的刷新令牌来获得新的访问令牌。

票数 2
EN

Stack Overflow用户

发布于 2021-02-24 04:56:14

由于您已经包含了JWT标记,所以我试图只考虑这一点来给出响应。JWT令牌是一个自给自足的编码令牌,包含某些属性,包括过期时间。唯一的目的是提供无状态身份验证。身份验证服务通常返回两个令牌,access_tokenrefresh_token。客户端将它们都存储在某个存储区中。访问令牌通常发出的时间非常短,因此客户端可以使用refresh_token,以便在后者到期时获得一个新的access_token。我们可以访问这些服务,直到refresh_token过期。之后,客户端必须经过身份验证过程才能获得新的令牌。万一用户从系统注销时,客户端应该从它的存储中移除两个令牌。因为在JWT中没有状态维护,所以服务器仍然可以接受旧令牌,直到它们未过期为止。

令牌的过期和完整性验证应在网关级别进行。

您可以避免使用服务令牌来服务通信,因为这些令牌是内部服务,并且运行在专用网络中,尽管在此级别上也可以进行同样的验证。

因此,在用户注销的情况下,用户的令牌应该从客户端删除,网关不应该与其他服务通信。在其他特殊情况下,令牌撤消是一种特殊情况,可以借助可扩展身份验证系统中的分布式缓存存储来处理。

票数 2
EN

Stack Overflow用户

发布于 2021-02-24 03:16:29

基于令牌的服务通常可以从令牌推断以下内容-

  • ,谁提出了请求?
  • ,到什么时候这个令牌被认为是有效的?
  • ,当使用该令牌时允许哪些操作?

基于令牌的服务只是根据所提供的令牌接受或拒绝请求,而不管它是用户还是发出请求的机器。登录用户只是指可以执行该用户被授权执行的操作的人。令牌是这样一个用户的有限表示。

我的意思是,应用程序告诉用户他们已经登录(有一个令牌它仍然可以使用),或者注销(还没有令牌,或者过期)。这种令牌是通过使用用户名和密码对服务进行身份验证来获得的。

答案是基于我的知识,所以每个人,请指出错误,如果有的话。我不知道关于aws网关的细节,所以也许其他人可以向您简要介绍一下,以防它的工作方式不同。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66343675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档