【发布时间】:2016-04-13 02:51:09
【问题描述】:
我正在开发一个企业应用程序,其中我为不同的客户端提供 4 种不同的 Web API 服务。整个平台由表单身份验证管理。我在执行此操作时遇到了一个有用的链接,并根据链接 https://wesleycabus.be/2014/06/adding-an-mvc-layer-on-top-of-a-web-api-backend/ 实施了解决方案。
我扩展了上面的示例并编写了一个新的身份验证服务并从中发出了 cookie 和令牌,我还观察到我能够将身份验证服务中的令牌用于演示中给出的服务,前提是我提供了相同的机器密钥。但是,当我尝试访问新创建的服务时,尽管所有设置都完好无损,但我无法访问。
我发现这种行为很奇怪,并比较了这两个项目。我看到的唯一区别是几个 nuget 包的版本,除了我没有看到任何关于代码差异的配置。任何帮助可能是我在这里面临的问题。提前致谢。
我看到的唯一区别是服务不工作的响应标头是这样的
缓存控制:无缓存 内容长度:81 内容类型:应用程序/xml;字符集=utf-8 日期:格林威治标准时间 2016 年 1 月 8 日星期五 18:12:44 过期:-1 杂注:无缓存 服务器:Microsoft-IIS/10.0 WWW-Authenticate:Bearer X-AspNet-版本:4.0.30319 X-Powered-By:ASP.NET X-SourceFiles:????= UTF-8乙QzpcTWFjQm9vayBEYXRhXEFkaXR5YVxFQ0RQU291cmNlQ29kZVxPQlJGXFRlYW1QT0NzXEF1dGhlbnRpY2F0aW9uXE12Y092ZXJXZWJBcGlcQXV0aGVudGljYXRpb25TZXJ2aWNlXGFwaVx2YWx1ZXM = = P>
对于有效的服务,响应标头是
缓存控制:无缓存 内容长度:195 内容类型:应用程序/xml;字符集=utf-8 日期:格林威治标准时间 2016 年 1 月 8 日星期五 18:14:32 过期:-1 杂注:无缓存 服务器:Microsoft-IIS/10.0 X-AspNet-版本:4.0.30319 X-Powered-By:ASP.NET X-SourceFiles:=?UTF-8?B?QzpcTWFjQm9vayBEYXRhXEFkaXR5YVxFQ0RQU291cmNlQ29kZVxPQlJGXFRlYW1QT0NzXEF1dGhlbnRpY2F0aW9uXE12Y092ZXJXZWJBcGlcTXlTZXJ2aWNlXGFwaVx2YWx=? 请求标头 查看源代码 接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 接受编码:gzip、deflate、sdch 接受语言:en-US,en;q=0.8 连接:保持活动状态
想知道承载在响应标头中代表什么。
注意:我可以通过在身份验证标头中传递令牌来访问新创建的服务,但当我尝试使用 cookie 时却无法访问它。
【问题讨论】:
-
应用和服务是否托管在同一个域下?您可能必须实施 CORS。 asp.net/web-api/overview/security/…
-
是的..事实上,即使我也在 Visual Studio 中调试,我也无法使用新服务进行身份验证。
标签: asp.net-mvc-4 authentication cookies asp.net-web-api oauth