Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Session 如何跟踪具有访问令牌的用户是否仍然拥有有效会话?_Session_Openid Connect_Session Management - Fatal编程技术网

Session 如何跟踪具有访问令牌的用户是否仍然拥有有效会话?

Session 如何跟踪具有访问令牌的用户是否仍然拥有有效会话?,session,openid-connect,session-management,Session,Openid Connect,Session Management,我不熟悉OIDC和会话管理,我想知道在用户已经使用隐式流或授权代码流登录到站点之后,建议使用什么方法来确保用户的会话有效 例如,假设一个用户登录mysite.com并在这个过程中获得一个访问令牌。令牌可以保存在仅HTTP的cookie中 mysite.com是否应该在用户每次请求受保护的资源(即使该资源未从OP检索)时轮询OpenId提供商(OP)以检查用户的会话状态,以确保用户没有手动修改访问令牌cookie?或者mysite.com应该在成功进行OIDC身份验证后盲目信任用户的令牌cooki

我不熟悉OIDC和会话管理,我想知道在用户已经使用隐式流或授权代码流登录到站点之后,建议使用什么方法来确保用户的会话有效

例如,假设一个用户登录mysite.com并在这个过程中获得一个访问令牌。令牌可以保存在仅HTTP的cookie中

mysite.com是否应该在用户每次请求受保护的资源(即使该资源未从OP检索)时轮询OpenId提供商(OP)以检查用户的会话状态,以确保用户没有手动修改访问令牌cookie?或者mysite.com应该在成功进行OIDC身份验证后盲目信任用户的令牌cookie吗

我想一种可能是将用户的会话状态存储到数据库中,但对于一个简单的问题来说,这似乎是一个相当繁重的解决方案


关于最佳实践的任何建议?

规范草案中描述了最佳实践

首先,您需要避免在最终用户设备和OP之间产生过多的网络流量。这对于移动设备尤其重要。因此,与重复身份验证请求不同,规范草案提供了一种更好的方法来将最终用户会话的状态与OP汇集在一起:在服务的网页中向OP插入一个隐藏的iframe。这样,此OP iframe将通过会话cookie维护到OP的会话,而无需对用户进行身份验证。因此,您可以使用交叉iframe消息轮询此iframe,以定期检查与OP的会话是否处于活动状态。这样,就不会有任何身份验证流来检查与OP的会话是否处于活动状态

您将在规范草案中找到其他技巧,例如在OP的ID令牌中使用过期日期

正如规范中所说,最终用户完全有可能在到期日之前退出OP。因此,非常希望能够在OP上了解最终用户的登录状态。这是最佳实践。但许多SP不使用OP检查最终用户会话状态。他们只管理自己的会话,例如,在一段非活动期后,会话将被删除。当此类事件发生时,它们将最终用户转发到OP的身份验证入口点,以启动新的身份验证会话

当与OP的会话已关闭时,许多SP不会选择关闭与SP的会话。从OP的角度来看,与OP的会话可能会持续很长时间,这不是为了帮助SP维护其会话,而是为了避免最终用户在连接到另一个SP时再次进行身份验证。当一组SP协同工作以提供无缝的用户体验时,这一点尤为重要,将用户从一个SP透明地重定向到另一个SP