修改表单身份验证登录过程并不难,因此除了正常的表单身份验证之外,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 应用程序而没有发生登录,因此没有机会创建会话令牌。这就是问题。我需要这两个令牌具有相同的生命周期。
我想到了一种可能的方法。我将其作为答案呈现在下面,以便人们可以就其优点发表意见或提出改进建议意见。如果我想到任何其他想法,我会把它们作为答案提出来,我希望你也会这样做。