node.js - Okta 单点登录使以前的用户保持新登录
问题描述
我目前正在开发实现 Okta SSO 服务的 SSO 应用程序,但是每当用户从应用程序注销并且另一个用户尝试登录时,登录按钮会自动获取前一个用户并以该帐户登录,甚至无需通过 okta登录页面。
这是交易:
通过 okta 登录的用户 1 登录
用户 1 注销
用户 2 尝试登录同一台计算机
页面自动以用户 1 登录
要真正从该用户注销,我必须转到 okta 中的应用程序页面并直接从那里注销用户,然后登录才会再次通过 okta 登录页面,我相信我在注销时遗漏了一些东西代码,我试图用 req.session.destoy 破坏用户会话,但它没有用,我不知道它还能是什么。
这是注销代码:
app.get('/logout', (req, res) => {
req.logout();
req.session.destroy();
res.redirect('/');
});
希望大家能帮帮我
解决方案
这确实是 SSO 的实际应用。大概这是在共享设备上?
对于第 1 步,您要在本地将用户从应用程序中注销?如果是这样,用户 1仍然有 Okta 会话,因此当用户 2 尝试在同一设备上登录时,Okta 会话仍然有效。用户通过 SSO 流程并最终以用户 1 的身份登录。
共享设备上的 SSO 需要考虑一些因素。您可以查看 Single Logout,它使用松散的标准将用户从本地应用程序注销,以及 Okta。或者,您需要查看适当的 Okta API,以便在您将用户从本地注销应用程序时直接注销用户。这将终止两个会话,然后将提示用户 2 进行身份验证。
推荐阅读
- android - colorControlNormal 未设置工具栏后退箭头颜色
- linux - 紧密的 VNC 服务器和 Gucamole
- ms-access - 访问删除字符串中的换行符,程序告诉它是NULL
- javascript - 模型连接彻底 Sequelize
- angular - 使用 *ngIf 的 Angular6 自动对焦
- python - 熊猫将数据框值重塑为列
- sql - SQL 子查询和 case 语句
- angular - mat-form-field 总是显示所需的红色?
- php - 如何为系统管理员检索除续订帐户之外的所有帐户
- javascript - 如何为chart.js格式化json