【发布时间】:2012-09-18 08:32:45
【问题描述】:
我正在使用 ASP.NET Web API 和基于自定义令牌的身份验证构建一个 RESTful 服务。客户端将在第一次调用时发送凭据。该服务将使用用户详细信息创建一个加密令牌,并且此令牌将从此时开始用于身份验证。现在服务需要将此令牌发送回客户端。最初,我将令牌保存在 HTTP 自定义响应标头中,以便客户端可以独立于服务返回的数据读取值。当客户端和服务在同一个域中时,这很有效,但在跨域场景中失败了。我启用了 CORS 并添加了各种标头,例如“Access-Control-Expose-Headers”、“Access-Control-Allow-Origin: *”等。但是跨域客户端无法读取自定义响应标头我创建的是“SecureToken:”。我在几篇文章中看到,Web 浏览器在跨域场景中读取自定义响应标头时存在一些问题。所以现在我正在考虑通过从服务发送的所有 ViewModel/数据对象的公共基类发送安全令牌。
在这种情况下,我有几个问题:
发送自定义安全令牌的最佳位置是什么。它是在响应头中还是作为 ViewModel/data 类的基类中的公共属性?
是否有标准的 HTTP 响应标头可用于发送令牌和自定义信息,以便跨域客户端也可以读取它?
任何帮助将不胜感激!谢谢!
【问题讨论】:
-
嗨 tpeczek - 感谢您抽出宝贵时间来研究这个问题。我以前看过这篇文章:codebetter.com/johnvpetersen/2012/04/02/…。我已经实现了使用私钥加密的基于令牌的身份验证。问题是如何在不注销用户的情况下发送更新的令牌(当会话超时更新时,会生成新的令牌)。一个特定的响应头是最好的选择,但不幸的是跨域客户端无法读取非标准响应头
标签: security http rest asp.net-web-api restful-authentication