不记名令牌无效。即使为同一用户发布了新的承载令牌,旧令牌仍然有效,可用于访问API资源。
我们如何限制(或制定解决方法)。
我有一个角度应用程序,我的ASP.NET Web API也位于同一个域中,它使用基于令牌的身份验证,这非常类似于带有个人身份验证的Visual Studio for Web API的脚手架模板样板代码。身份验证针对Windows AD,并且在OAuthAuthorizationServerProvider实现的GrantResourceOwnerCredentials中对此进行了轻微更改。
我认为,问题是:
1)即使凭据已更改,生成的承载令牌也不会失效。
2)即使为同一用户名创建了新令牌,为用户名发出的持有者令牌仍然有效。在这种情况下,两个令牌都是有效的。
3)如果有人从一台机器授权,令牌可以长时间停留在该机器上,因此任何其他用户都可以使用该站点并自动获得授权。将在注销期间编写用于从角度代码清除令牌的代码。但是,如果用户没有注销该怎么办。
4)为令牌留出短暂的生命周期是有道理的。但是,此应用程序是一个内部应用程序,它针对Windows AD进行身份验证。因此,用户希望登录保持原样,而不是每半小时左右重新登录并再次登录。
我想要达到的目标是:
1)至少,如果用户登录,则先前为同一用户生成的访问令牌必须无效。我们需要有一个DB表(可能称为UserToken)并手动存储并检查它以实现此目的。如果实现这一点,至少登录另一台机器的用户一旦登录回原始机器就会拒绝访问令牌。
(用户可以使用任何有效的AD帐户登录,因为此项目的身份验证类型为none,并且已从登录表单对AD进行身份验证)。
我不确定应该考虑所有其他事情。
欢迎任何想法/建议。
(我试着看一下刷新令牌,但因为它是一个客户端应用程序,不知道我可以在哪里保存刷新令牌并以有效的方式使用。)
答案 0 :(得分:0)
选中此How to limit user to only one access token in ASP.NET Identity
关于刷新令牌,您需要将其保存在本地存储或Cookie中。