首页 文章

Web Api2 OAuth承载令牌生存期管理

提问于
浏览
0

不记名令牌不会失效 . 即使为同一用户发布了新的承载令牌,旧令牌仍然有效并且可用于访问API资源 .

我们如何限制(或制定解决方法) .

我有一个角度应用程序,我的ASP.NET Web API也存在于同一个域中,它使用基于令牌的身份验证,这与Visual Studio for Web API with Individual Authentication的脚手架模板样板代码非常相似 . 身份验证针对Windows AD,并且在OAuthAuthorizationServerProvider实现的GrantResourceOwnerCredentials中对此进行了轻微更改 .

我认为,问题是:

1)即使凭证被更改,一旦生成的承载令牌也不会失效 .

2)即使为同一用户名创建了新令牌,为用户名发出的承载令牌仍然有效 . 在这种情况下,两个令牌都是有效的 .

3)如果有人从一台机器授权,令牌可以长时间停留在该机器上,因此任何其他用户都可以使用该站点并自动获得授权 . 将在注销期间编写用于从角度代码清除令牌的代码 . 但是,如果用户没有注销会怎么样 .

4)为令牌留出短暂的生命周期是有道理的 . 但是,此应用程序是针对Windows AD进行身份验证的内部应用程序 . 因此,用户希望登录保持原样,并且不会每半小时的空闲时间再次注销并再次登录 .

我想要达到的目标是:

1)至少,如果用户登录,则先前为同一用户生成的访问令牌必须无效 . 我们需要有一个DB表(可能称为UserToken)并手动存储并检查它以实现此目的 . 如果达到这一点,则至少登录另一台计算机的用户在登录到其原始计算机后将拒绝访问令牌 .

(用户可以使用任何有效的AD帐户登录,因为此项目的身份验证类型为none,并且从登录表单对AD进行了身份验证) .

我不确定应该考虑其他所有事情 .

欢迎任何想法/建议 .

(我试着看一下刷新令牌,但因为它是一个客户端应用程序,不知道我可以在哪里保存刷新令牌并以有效的方式使用 . )

1 回答

相关问题