Msal v2 库,处理 SSO 的注销(Node.js 和 Vue.js)

Msal v2 library, handle logout for SSO (Node.js and Vue.js)

问题:

使用 msal v2,当用户通过 Microsoft 帐户登录应用程序时,它会将参数保存到 sessionStorage 并且一切正常,当用户在 Office.com 或注销时出现问题使用 Microsoft SSO 的任何其他站点。由于数据仍保存在 sessionStorage 中(尝试与 localStorage 相同),即使用户已注销,AcquireSilentToken(...) 也会使用缓存数据进行解析。

尝试过

它建议使用 AcquireSilentToken(...) 但它无误地解决了 promise 因为它检查了 sessionStorage.

我的情况:

在中间件中我想做的事情:

const promise = msalInstance.acquireTokenSilent(graphScopes);
  promise.then(resp=>{
    //User is logged continue next();
      }).catch(error=>{
    //User is not logged in clear sessionStorage/localStorage and next('/login')
  });

所以如果有人可以帮助我通过 msal 询问用户是否已注销。非常感谢。

此行为是设计使然。 AAD 服务使用 cookie 来记住您的身份并自动登录。

服务的注销过程强制会话 cookie 过期。这些会话 cookie 用于在您使用这些服务时维护您的登录状态。但是,由于 Web 浏览器仍处于 运行 并且可能无法更新以正确处理 cookie,因此您可能有一个未更新的 cookie 过期并完成注销过程。默认情况下,这些 cookie 的有效期为八小时,或者设置为在您关闭所有网络浏览器时过期。

const promise = msalInstance.acquireTokenSilent(graphScopes);
  promise.then(resp=>{
    const logoutRequest = {
           account: instance.getAccountByHomeId(homeAccountId),
    postLogoutRedirectUri: "your_app_logout_redirect_uri"
}
instance.logoutRedirect(logoutRequest);
  }).catch(error=>{
//User is not logged in clear sessionStorage/localStorage and next('/login')

});

这也是一个已知的issue