我目前正在从事实施Okta SSO服务的SSO应用程序,但是每当一个用户从应用程序注销而另一个用户尝试登录时,登录按钮都会自动将以前的用户作为该帐户登录,而无需登录通过okta登录页面。
这是交易:
用户1登录通过okta登录
用户1注销
用户2尝试在同一台计算机上登录
页面自动以用户1登录
要真正从该用户注销,我必须进入okta的应用程序页面,然后直接从那里注销该用户,然后才可以再次通过okta登录页面登录,我相信我在注销代码,我试图用req.session.destoy销毁用户会话,但没有用,我不知道还有什么可能。
这是注销代码:
app.get('/logout', (req, res) => {
req.logout();
req.session.destroy();
res.redirect('/');
});
希望大家能帮助我
答案 0 :(得分:0)
这实际上是SSO。大概是在共享设备上吗?
对于步骤1,您是将用户从本地注销应用程序吗?如果是这样,则用户1 still 具有Okta会话,因此,当用户2尝试在同一设备上登录时,Okta会话仍然有效。该用户经历了SSO流程并最终以用户1身份登录。
共享设备上的SSO需要一些考虑。您可以查看Single Logout,它使用宽松的标准将用户从本地应用程序注销,也可以使用Okta。或者,您需要查看适当的Okta API,以便在将用户从本地应用程序注销时直接将其注销。这将杀死两个会话,然后将提示用户2进行身份验证。