Windows应用商店应用中的MVC5 WebApi2(OWIN)和WebAuthenticationBroker

时间:2013-12-29 14:32:36

标签: c# asp.net-web-api windows-store-apps asp.net-mvc-5

我在使用MVC5 WEBAPI2解决方案中的AccountController从Windows应用商店应用进行身份验证时遇到问题。我正在使用为WEBAPI创建新ASP.NET项目时生成的标准代码。

我正在使用WebAuthenticationBroker对用户进行身份验证,并使用UseMicrosoftAccountAuthentication在Startup.Auth.cs中配置了Microsoft身份验证。

一切似乎都达到了AccountController.GetExternalLogin方法需要发出令牌的程度。我已成功通过身份验证,并使用“承载”身份验证类型创建新身份,但是会发出200 OK而不是使用承载令牌进行预期的302重定向。

我正在使用Fiddler2将SPA应用程序与Windows应用商店应用程序进行比较。两者之间的小提琴的区别在于/ api / account / externallogin请求在从浏览器调用时使用已发布的令牌执行302响应,而在从Windows应用商店应用调用时没有承载令牌则响应200 ok响应。

我使用从/ api / account / externallogins创建的URL来发出请求,这两种情况完全相同。我能找到的唯一不同的是用户代理头。

在我看来,当请求来自Windows应用商店应用时,OWIN中间件不会发出302重定向,并从操作本身返回200 OK。任何帮助将不胜感激。

以下是启动工作流程的两个请求: 来自SPA应用程序:

GET /api/Account/ExternalLogin?provider=Microsoft&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Fflo.p1e.me%3A58546%2F&state=BS7KabYeygoz9t3Iqsruc1S9UccJP35-CTNnW9h43SM1 HTTP/1.1 

从Windows应用商店应用

GET /api/Account/ExternalLogin/?provider=Microsoft&response_type=token&client_id=self&redirect_uri=ms-app%3A%2F%2Fs-1-15-2-2064878076-3984620318-3112860537-1772958928-95178788-1397955450-1148366612%2F&state=bKHK18Oo_Xv8PeFoPbfiInrV9lU70oRfNGypTw9z8701 HTTP/1.1

我使用相同的redirect_uri进行两次调用,结果相同。

1 个答案:

答案 0 :(得分:1)

我已经通过删除URL中的尾随/后跟来解决了这个问题。

在:

GET /api/Account/ExternalLogin/?provider=Microsoft&response_type=token&client_id=self&redirect_uri=ms-app%3A%2F%2Fs-1-15-2-2064878076-3984620318-3112860537-1772958928-95178788-1397955450-1148366612%2F&state=bKHK18Oo_Xv8PeFoPbfiInrV9lU70oRfNGypTw9z8701 HTTP/1.1

后:

GET /api/Account/ExternalLogin?provider=Microsoft&response_type=token&client_id=self&redirect_uri=ms-app%3A%2F%2Fs-1-15-2-2064878076-3984620318-3112860537-1772958928-95178788-1397955450-1148366612%2F&state=bKHK18Oo_Xv8PeFoPbfiInrV9lU70oRfNGypTw9z8701 HTTP/1.1