当独立服务处理“身份验证”和“显示用户内容”时,如何在微服务架构中注销用户?

问题描述 投票:0回答:1

更新:

  1. 我想我可以使用 Cognito LOGOUT Endpoint 来解决这个问题。仍在努力实施此...
  2. 没关系,我无法使用 LOGOUT 端点,因为我没有使用托管 UI

我的项目有一个处理身份验证的 Web 应用程序,我们可以将其称为 Auth Web 应用程序,它将在域中的自己的服务器上运行

login.example.com
。该项目将有第二个 Web 应用程序,在 User Web App 中显示用户数据,并且它将在域中自己的服务器上运行
app.example.com

我可以使用 AWS Amplify Cognito 在 Auth Web 应用程序 中成功对用户进行身份验证,将 JWT 令牌保留在 cookie 中,并将用户重定向到 用户 Web 应用程序

正如我的问题所述,我正在尝试找出如何注销用户。我想象流程如下,我被困在第 3 步。我陷入了这一步,因为我想象 Auth Web App 不知道谁刚刚被重定向到它。

  1. 用户打开 用户 Web 应用程序并选择“注销”按钮
  2. 用户被重定向到 Auth Web 应用程序
  3. Amplify 如何知道用户是谁在 Auth Web 应用程序
  4. 使用此 Amplify 代码将用户注销:
    Auth.signOut()
  5. 清除cookies

任何指导将不胜感激!

authentication vuejs3 microservices amazon-cognito aws-amplify
1个回答
0
投票

通常 JWT 的要点是您的身份验证部分生成具有有限(通常为 1 小时)有效性的 JWT,而其他应用程序只是验证它而不联系身份验证部分。

这意味着除了登录之外,身份验证部分不存在于逻辑的任何部分中,因此您无法在那里“注销”。

注销是通过删除客户端应用程序中的令牌来完成的。

如果应用程序具有任何类型的刷新令牌,则可以(并且应该)首先从身份验证部分中删除此类令牌,然后再将其从客户端应用程序中删除。要点是 - 如果您能够使用刷新令牌,您就能够对自己进行身份验证(和授权)。以同样的方式,您应该对自己进行身份验证,只是不生成新的 JWT 访问令牌,而是从身份验证部分删除刷新令牌。

© www.soinside.com 2019 - 2024. All rights reserved.