令牌持有者身份验证 - 不活动时间后注销

Posted

技术标签:

【中文标题】令牌持有者身份验证 - 不活动时间后注销【英文标题】:Token bearer authentication - logout after inactivity time 【发布时间】:2017-07-10 02:02:01 【问题描述】:

我正在使用 Wep Api 作为后端编写淘汰赛应用程序。我使用这个tutorial 来实现令牌持有者授权,所以我有访问令牌,但是登录功能是在外部提供的。 我需要实现的是在特定时间后注销,例如1 小时,如果一直处于活动状态 - 更长的时间后 - 10 小时。所以我的设置如下:

   OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
        
            AllowInsecureHttp = true,
            TokenEndpointPath = new PathString("/token"),
            AccessTokenExpireTimeSpan = TimeSpan.FromHours(10),     
            Provider = container.Resolve<IOAuthAuthorizationServerProvider>()
        ;

而且有效 - 访问权限在 10 小时后被撤销,但是如何在 1 小时不活动后实现注销?我想知道刷新令牌的某些用法或在应用程序中实现会话。

【问题讨论】:

你想用刷新令牌实现什么..?? 【参考方案1】:

如何实现1小时不活动后退出?

你可以试试这样的。

<script type="text/javascript">
var timeout = 3600000; // Timeout in 60 mins.

var timeoutTimer;

// Start timers.
function StartTimers()     
    timeoutTimer = setTimeout("Timeout()", timeout);


// Reset timers.
function ResetTimers() 
    clearTimeout(timeoutTimer);
    StartTimers();


function Timeout() 
    // Your logout logic.


</script>

<body onload="StartTimers();" onmousemove="ResetTimers();">

</body>

它基本上是在页面加载时启动计时器,onmousemove ite 重置计时器,并且在没有活动时它会触发超时,您可以在其中放置注销逻辑。

【讨论】:

当然,我已经实现了这样的东西,但是使用了会话使用情况和有关活动的信息。问题是 access_token 在服务器端仍然有效 它将一直有效,直到过期时间结束。保持令牌在短时间内过期并在注销时清除 access_token ...您在创建令牌时定义的所有内容都存储在 access_token 本身中,并且没有任何内容存储在服务器上。请参阅此以获取更多参考docs.microsoft.com/en-us/aspnet/web-api/overview/security/… 和此***.com/questions/7030694/why-do-access-tokens-expire/…

以上是关于令牌持有者身份验证 - 不活动时间后注销的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 5 OAuth 持有者令牌身份验证

Sanctum Laravel 8 用于 API 身份验证的问题(不会在注销时删除令牌)

Web API 2,OWIN 身份验证,SignOut 不注销

在 OpenStack Horizo​​n 中保持更长时间的身份验证

注销Firebase经过身份验证的用户后写入Firestore

如何在节点 js 的服务器端验证谷歌身份验证令牌?