无法使用Local .NET后端进行身份验证

时间:2014-03-18 18:57:40

标签: azure-mobile-services

我已按照指南:

Getting Started with Authentication with Mobile Services .NET for Windows Store

只要我不需要对用户进行身份验证,我就可以在本地运行该服务。如果我将服务发布到Azure,我也可以对用户进行身份验证。但我希望能够在本地测试对用户进行身份验证。怎么办呢?

我正在使用Live ID,并且我在Web.config中设置了正确的ClientID和ClientSecret。当我尝试从客户端调用LoginAsync时,调用失败,请求无法完成。 (不允许的方法)

** 更新2014-03-20 **

根据Carlos和Henrik的评论,我已将本地服务更新为完全,就像我的服务器实例一样。我跟踪了Scot Hanselmans excellent guide,现在我的服务在端口80 端口443上本地运行,并且具有完全有效的SSL证书。它甚至运行在完全相同的 https://xxxx.azure-mabile.net 主机名上。

通过这些更改,现在在针对本地计算机运行应用程序或针对Azure运行应用程序之间没有任何配置差异。我可以在浏览器中转到 https://xxxx.azure-mabile.net ,重定向到Live登录,登录,然后成功重定向回服务。在浏览器中一切正常。但是仍然在应用程序中无效。

我附加了调试器,将CLR错误设置为"抛出时中断"我设法在服务中捕获异常。这就是我在即时窗口中看到的内容:

Immediate Window

Response属性没有帮助。它没有提供有关该问题的任何其他信息。

唯一突出的是该应用正在尝试对 / login / microsoftaccount 执行 POST ,而浏览器通常会执行 GET 在此地址(然后重定向)。

** 更新#2 2014-03-20 **

在关注remote debugging的Henriks指南后,我能够加载符号并获得 tiny 位更多信息:

"远程主机"

强行关闭现有连接

错误代码为10054(WSAECONNRESET)由对等方重置连接。

实时身份验证服务器可能会强制终止连接,但仅限于我使用该应用进行身份验证时。同样,浏览器中的身份验证也很好。这与 / login / microsoftaccount 是来自应用程序的POST的事实相结合似乎表明我从LiveClient.LoginAsync返回的身份验证令牌存在问题。我会做更多的挖掘......

2 个答案:

答案 0 :(得分:0)

目前,它已设置为在本地运行从localhost访问服务时不需要身份验证。在这种情况下,允许匿名访问(当然在云中运行时禁用)。

我们没有办法让您在本地进行身份验证,因为重定向URI无法正常工作(他们无法指向localhost,因为Facebook无法解析和#34;本地主机"。)

一个选择是,我们可以在某种程度上模拟本地身份验证,并为您提供令牌,而无需连接各种身份提供程序。我不确定那会是什么样子,但这是我们可以考虑的事情。

的Henrik

答案 1 :(得分:0)

您是否在Live Connect项目中设置了Mobile client app: Yes?我认为该设置旨在与Live Connect SDK(客户端)流一起使用,而不是基于浏览器(服务器)流。使用.NET后端尚不支持客户端流程。

您还需要确保在客户端上使用LoginAsync(MobileServiceAuthenticationProvider.MicrosoftAccount)来触发服务器流。