MVC和Web API中Cookie身份验证的挑战

问题描述:

我正在研究一个企业应用程序,其中针对不同客户端有4种不同的Web API服务。整个平台由表单身份验证管理。我遇到了一个有用的链接,并按照链接https://wesleycabus.be/2014/06/adding-an-mvc-layer-on-top-of-a-web-api-backend/实施了解决方案。MVC和Web API中Cookie身份验证的挑战

我扩展了上面的示例并编写了一个新的认证服务,并从相同的地方发布了cookie和令牌,我还观察到我能够使用来自认证服务的令牌给出的服务演示,只要我给了相同的机器密钥。但是,当我尝试访问新创建的服务时,虽然所有设置都完好无损,但无法访问。

我发现这种行为很奇怪,并比较了两个项目。我看到的唯一区别是几个nuget软件包的版本,除此之外我没有看到代码差异的任何配置。任何帮助可能是我在这里面临的问题。提前致谢。

我看到的唯一区别是不工作的响应头的服务都是这样

缓存控制:无缓存 的Content-Length:81 的Content-Type:application/xml进行;字符集= UTF-8 日期:星期五,2016年1月8日18点12分44秒GMT 截止日期:-1 杂注:无缓存 服务器:Microsoft-IIS/10.0 WWW验证:承载 X-ASPNET-版本:4.0.30319 X供电-通过:ASP.NET X-SourceFiles:= UTF-8乙QzpcTWFjQm9vayBEYXRhXEFkaXR5YVxFQ0RQU291cmNlQ29kZVxPQlJGXFRlYW1QT0NzXEF1dGhlbnRpY2F0aW9uXE12Y092ZXJXZWJBcGlcQXV0aGVudGljYXRpb25TZXJ2aWNlXGFwaVx2YWx1ZXM = =

对于工作的响应报头是服务

????缓存控制:no-cache Content-Length:195 Content-Type:application/xml;字符集= UTF-8 日期:星期五,2016年1月8日18时14分32秒GMT 截止日期:-1 杂注:无缓存 服务器:Microsoft-IIS/10.0 X-ASPNET-版本:4.0.30319 X -Powered-通过:ASP.NET X-SourceFiles:= UTF-8乙QzpcTWFjQm9vayBEYXRhXEFkaXR5YVxFQ0RQU291cmNlQ29kZVxPQlJGXFRlYW1QT0NzXEF1dGhlbnRpY2F0aW9uXE12Y092ZXJXZWJBcGlcTXlTZXJ2aWNlXGFwaVx2YWx1ZXM = = 请求头 视图源 接受:????text/html的,应用/ XHTML + xml的,应用/ XML; q = 0.9,image/webp,/; q = 0.8 Accept-Encoding:gzip,deflate,sdch Accept-Language:zh-CN,en; q = 0.8 Connection:keep-alive

想知道承载者在响应头中代表什么。

注意:我可以通过在身份验证标头中传递令牌来访问新创建的服务,但当我尝试使用cookie进行操作时,无法访问它。

+0

应用程序和服务托管在同一个域下吗?您可能需要实施CORS。 http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api – lcryder

+0

是的..事实上,即使当我在Visual Studio中进行调试时,我也无法使用新服务进行身份验证。 –

终于找到了问题。两个服务之间的Microsoft.Owin.Security DLL中存在版本不匹配问题。一旦我确定版本相同