跨域 HTTP POST 认证
Posted
技术标签:
【中文标题】跨域 HTTP POST 认证【英文标题】:Cross domain HTTP POST authentication 【发布时间】:2021-12-01 21:52:15 【问题描述】:我们希望在两个 Web 应用程序之间实现一个简单的经过身份验证的 HTTP POST 集成,虽然 JWT 之类的东西应该可以工作,但它似乎有点过头了。
用例:
-
应用程序 A 通过 https 向应用程序 B 发送一个带有隐藏表单和 target=_blank 的 POST。
应用程序 B 从 POST 正文中读取参数,对其进行验证和身份验证,并将用户重定向到应用程序 B 中的正确内容。
应用程序 B 的会话 cookie 使用 SameSite=None 进行持久化,以捕获同一浏览器中的现有会话。 可以假设应用程序 A 和 B 的服务器位于不同的受限环境中,因此所有流量都必须通过浏览器。 我想避免交换证书,如果足够的话,基于简单文本的共享或非对称密钥将是理想的。
我们已经有另一个集成,发件人发送以下内容:
有效载荷 时间戳 结合有效负载、时间戳和共享密钥的哈希接收方检查发送的哈希是否与接收方计算的哈希匹配,因此本质上是一个带有时间戳的 HMAC,以防止存储重复(但不保护重复,在这种情况下很好)。我认为添加一个缓存在接收端的随机数可以防止欺骗,并且在我们验证每个请求时忽略 CSRF,但看起来这是一个已经被更有资格的人解决的问题,我应该使用现有的标准或实施。
有什么建议吗?我们使用 .NET 以防影响库推荐。
【问题讨论】:
【参考方案1】:经过进一步研究,我们将使用 TOTP (Time-based One-Time Password)。它满足我们所有的要求,只需要在两端配置一个共享密钥,并且有很多现有的库可以使用。
【讨论】:
以上是关于跨域 HTTP POST 认证的主要内容,如果未能解决你的问题,请参考以下文章