首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过Thinktecture IdentityModel令牌防止重放攻击?

如何通过Thinktecture IdentityModel令牌防止重放攻击?
EN

Stack Overflow用户
提问于 2013-11-23 06:16:49
回答 2查看 1.3K关注 0票数 1

我有两个网站在不同的领域。我正在使用Thinktecture IdentityModel实现单点登录。

用户登录到站点A,然后单击链接转到站点B。站点A使用JWT令牌将用户重定向到站点B/Login.aspx? token =< token >。然后,站点B通过调用站点A上的API对用户进行身份验证来验证令牌。如果通过身份验证,用户将自动登录到站点B。

默认情况下,Thinktecture令牌持续10小时,无法杀死令牌(据我所知)。如果用户从站点注销,令牌仍然有效。我可以查看浏览器历史记录并获取"Login.aspx?token=< token >“url,然后自动重新登录。有没有一种方法可以在用户注销时杀死所有令牌?令牌不应该作为查询字符串的一部分传递吗?防止重放攻击的最佳方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2014-01-15 21:45:00

正如@leastprivilege对您的问题所评论的那样,您只需将两个站点都定义为信任同一IDP的RP(依赖方),就可以轻松地实现两个站点的SSO。这当然会简化您的身份验证解决方案体系结构。

话虽如此,使用WS-Fed的被动身份验证仍然容易受到重放攻击。尽管令牌已发布到您的站点上,但在浏览器上点击几次“返回”(即使在注销之后),也会将令牌重新发布到您的站点,并让用户重新登录。

幸运的是,WIF有一种方法可以减轻这种攻击。通过配置:

代码语言:javascript
复制
    <identityConfiguration>
     .......
 <tokenReplayDetection enabled="true" />
     .....
    </identityConfiguration>

然后,Wif将使用的令牌缓存在服务器上,并确保它只使用一次。(如果检测到SecurityTokenReplayDetectedException重放攻击,则会引发适当的异常)。

当然,这种缓存不会在进程回收中幸存下来,并且在web场场景中也是不够的。如果您还想在这些场景中缓解这种攻击,您将需要某种类型的分布式持久缓存。

我实现了一个a contribution to Thinktecture.IdentityModel,您可以查看并使用它。

票数 1
EN

Stack Overflow用户

发布于 2013-11-26 04:23:05

听起来POSTing令牌应该可以解决这个问题,至少在您描述的这个最明显的场景中是这样。我没有使用过JWT令牌,但是SAML令牌通常是POSTed的。我敢打赌,服务器也可以配置为发布jwt令牌。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20155529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档