- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
修改表单例份验证登录过程并不难,因此除了正常的表单例份验证之外,WebClient 对象对由使用 Thinktecture IdentityModel 设置的 Web Api DAL 提供的 api/token url 进行基本身份验证。然后可以将返回的 session token 存储在 session 字典中,供以后调用 DAL 时使用。
问题是这些 token 有不同的生命周期。
我可以重写应用程序以将凭据保存在 localStorage 中,以便根据需要重新创建 session token ,但这很丑陋,从安全角度来看也不理想。
可能有一些方法可以为其中一个或两个系统配置 token 持久性,但我不知道要使用什么搜索词(我尝试搜索 token 持久性和 token 生命周期,但结果没有帮助)。
我对关于如何最好地协调两种类型的 Web 应用程序安全性的哲学和实用建议很感兴趣。如果没有关于这个主题的答案,我会感到非常惊讶,只要我知道要搜索什么。
一些背景知识,因为有些人不清楚我在问什么。
有一个丑陋的老式 ASP.NET Web 应用程序,它使用基于表单的安全性
我刚刚将新内容添加为使用 Thinktecture IdentityModel 的单独 DAL 应用程序。此 DAL 由两个应用程序使用,即 ASP.NET 应用程序和 Durandal SPA。
它们使用相同的数据库进行凭证检查,因此它们具有相同的身份空间。
我修改了旧应用程序的登录过程,以便它也向 Thinktecture IdentityModel 提供凭据并从中获取 session token 。此 token 将放入 session 集合中,以便在旧应用程序调用 DAL 时显示。
如果您启动旧应用程序、进行身份验证、执行某些操作并关闭浏览器,然后重新打开浏览器,则您有一个已登录的 ASP.NET 应用程序没有发生登录,因此没有机会创建 session token 。这就是问题。我需要这两个 token 具有相同的生命周期。
我想到了一种可能的方法。我在下面将其作为答案呈现,以便人们可以就其优点发表意见或提出改进建议意见。如果我想到任何其他想法,我会把它们作为答案提出来,我希望你也这样做。
最佳答案
在服务器上,我知道用户 ID,无论是在生成 session token 时还是稍后在没有它的情况下重新创建 ASP.NET session 时。
我需要的是相当于 cookie 的服务器。快速搜索“服务器端 cookie”会返回几篇文章,其中一篇显然是我在 1999 年自己写的,所有这些文章都归结为“使用数据库”。
所以...我可以使用数据库。我们有一个用户表,我可以添加一列。或者我可以创建另一个包含三列的表:UID、SessionToken 和 CreatedAt。
CreatedAt 是一个日期时间,从中我可以计算出 token 是否已过期以及何时我可以使 ASP.NET session 过期以强制重新登录。
我最终使用了一个变体。在我的具体情况下,使用 UID,可以从用户表中获取凭据。所以我将 token 和创建时间放入 session 中,否则按上述方式进行。当 Session 不包含 token 过期时间或 token 已过期时,我获取凭据并请求 token ,然后更新 token 和过期时间。
所有这些都包含在一个异常处理程序中,该处理程序返回一个虚拟(无效) token ,其最终结果是行为与具有相同持久性的 token 相同。
您会注意到我没有使用持久表。这样,故障点就会减少,并且不依赖于编辑数据库模式的能力。在表中管理状态的成本至少与生成新 token 的成本一样高。
关于oauth - 桥接表单例份验证和 OAUTH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28335960/
在 JSF2 应用程序中遇到验证属性的问题时,有两种主要方法。 使用 Annotation 在 ManagedBean 上定义验证 @ManagedBean public class MyBean {
我想实现一个不常见的功能,我认为 jquery 验证插件将是最好的方法(如果您在没有插件的情况下建议和回答,我们也会欢迎)。我想在用户在输入字段中输入正确的单词后立即隐藏表单。我试过这个: $("
我有几个下拉菜单(类名为month_dropdown),并且下拉菜单的数量不是恒定的。我怎样才能为它们实现 NotEqual 验证。我正在使用 jQuery 验证插件。 这就是我写的 - jQuery
我设法制作了这个网址验证代码并且它起作用了。但我面临着一个问题。我认为 stackoverflow 是获得解决方案的最佳场所。 function url_followers(){ var url=do
我目前正在使用后端服务,该服务允许用户在客户端应用程序上使用 Google Games 库登录。 用户可以通过他们的 gplay ID 向我们发送信息,以便登录或恢复旧帐户。用户向我们发送以下内容,包
我正在尝试验证输入以查看它是否是有效的 IP 地址(可能是部分地址)。 可接受的输入:172、172.112、172.112.113、172.112.113.114 Not Acceptable 输入
我从 Mongoose 验证中得到这条消息: 'Validator failed for path phone with value ``' 这不应该发生,因为不需要电话。 这是我的模型架构: var
我一直在尝试使用Python-LDAP (版本 2.4.19)在 MacOS X 10.9.5 和 Python 2.7.9 下 我想在调用 .start_tls_s() 后验证与给定 LDAP 服务
我正在处理一个仅与 IE6 兼容的旧 javascript 项目(抱歉...),我想仅在 VS 2017 中禁用此项目的 ESLint/CSLint/Javascript 验证/CSS 验证。 我知道
我正在寻找一种方法来验证 Spring 命令 bean 中的 java.lang.Double 字段的最大值和最小值(一个值必须位于给定的值范围之间),例如, public final class W
我正在尝试在 springfuse(JavaEE 6 + Spring Framework (针对 Jetty、Tomcat、JBoss 等)) 和 maven 的帮助下构建我的 webapps 工作
我试图在我们的项目中使用 scalaz 验证,但遇到了以下情况: def rate(username: String, params: Map[String, String]): Validation
我有一个像这样的 Yaml 文件 name: hhh_aaa_bbb arguments: - !argument name: inputsss des
我有一个表单,人们可以单击并向表单添加字段,并且我需要让它在单击时验证这些字段中的值。 假设我单击它两次并获取 2 个独立的字段集,我需要旋转 % 以确保它在保存时等于 100。 我已放入此函数以使其
在我的页面中有一个选项可以创建新的日期字段输入框。用户可以根据需要创建尽可能多的“截止日期”和“起始日期”框。就像, 日期_to1 || date_from1 日期到2 ||日期_from2 date
我有一个像这样的 Yaml 文件 name: hhh_aaa_bbb arguments: - !argument name: inputsss des
有没有办法在动态字段上使用 jquery 验证表单。 我想将其设置为必填字段 我正在使用 Jsp 动态创建表单字段。 喜欢 等等...... 我想使用必需的表单字段验证此表单字段。 最佳答
嗨,任何人都可以通过提供 JavaScript 代码来帮助我验证用户名文本框不应包含数字,它只能包含一个字符。 最佳答案 使用正则表达式: (\d)+ 如果找到匹配项,则字符串中就有一个数字。 关于J
我有两个输入字段holidayDate和Description(id=tags) $(document).ready(function() {
我遇到了这个问题,这些验证从电子邮件验证部分开始就停止工作。 我只是不明白为什么即使经过几天的观察,只是想知道是否有人可以在这里指出我的错误? Javascript部分: function valid
我是一名优秀的程序员,十分优秀!