【发布时间】:2015-02-26 07:50:39
【问题描述】:
修改表单身份验证登录过程并不难,因此除了正常的表单身份验证外,WebClient 对象对使用 Thinktecture IdentityModel 设置的 Web Api DAL 提供的 api/token url 进行基本身份验证。然后可以将返回的会话令牌存储在会话字典中,以供以后调用 DAL 时使用。
问题是这些令牌有不同的寿命。
我可以重写应用程序以将凭据保存在 localStorage 中,以便根据需要重新创建会话令牌,但这很丑陋,从安全角度来看并不理想。
可能有一些方法可以为这些系统中的一个或两个配置令牌持久性,但我不知道要使用什么搜索词(我尝试搜索令牌持久性和令牌寿命,但结果没有帮助)。
我对如何最好地协调这两种网络应用安全性的哲学和实用建议都很感兴趣。如果还没有关于这个主题的答案,我会感到非常惊讶,只要我知道要搜索什么。
一点背景知识,因为有些人不清楚我在问什么。
有一个又大又丑的老式 ASP.NET Web 应用程序,它使用基于表单的安全性
我刚刚添加了新的东西作为使用 Thinktecture IdentityModel 的单独 DAL 应用程序。此 DAL 由两个应用程序使用,即 ASP.NET 应用程序和 Durandal SPA。
它们使用相同的数据库进行凭据检查,因此它们具有相同的身份空间。
我已修改旧应用程序的登录过程,以便它还向 Thinktecture IdentityModel 提供凭据并从其获取会话令牌。每当旧应用调用 DAL 时,此令牌就会被放入 Session 集合中。
如果您启动旧应用程序、进行身份验证、执行操作并关闭浏览器,然后重新打开浏览器,您将拥有一个已登录的 ASP.NET 应用程序没有发生登录,因此没有机会创建会话令牌。这就是问题。我需要这两个令牌具有相同的生命周期。
我想到了一种可能的方法。我将其作为答案呈现在下面,以便人们可以就其优点发表意见或提出改进建议。如果我想到任何其他想法,我会将它们作为答案提出来,我希望你也会这样做。
【问题讨论】:
-
有什么原因你不能只为两个令牌使用较短的令牌寿命吗?当第一个过期时,只需重新进行身份验证,然后撤销寿命较长的令牌或直接替换它。
-
您正在寻找的是身份验证令牌过期配置。但是,您的问题是关于您正在做什么以及您要达到的目标的细节非常低。你为什么使用 localStorage(客户端)作为 OAUTH 令牌并且还形成身份验证(服务器端)。
标签: oauth forms-authentication thinktecture-ident-model