Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure mobile services Can';t使用本地.NET后端进行身份验证_Azure Mobile Services - Fatal编程技术网

Azure mobile services Can';t使用本地.NET后端进行身份验证

Azure mobile services Can';t使用本地.NET后端进行身份验证,azure-mobile-services,Azure Mobile Services,我遵循了指南: 只要不需要对用户进行身份验证,我就可以在本地运行该服务。如果我将服务发布到Azure,我还可以对用户进行身份验证。但是我希望能够在本地测试和验证用户。如何做到这一点 我正在使用Live ID,并且在Web.config中设置了正确的ClientID和ClientSecret。当我尝试从客户端调用LoginAsync时,调用失败,请求无法完成。(不允许使用方法) **更新2014-03-20** 根据Carlos和Henrik的评论,我已经更新了我的本地服务,使其看起来与我的服务

我遵循了指南:

只要不需要对用户进行身份验证,我就可以在本地运行该服务。如果我将服务发布到Azure,我还可以对用户进行身份验证。但是我希望能够在本地测试和验证用户。如何做到这一点

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

**更新2014-03-20**

根据Carlos和Henrik的评论,我已经更新了我的本地服务,使其看起来与我的服务器实例一模一样。我跟随Scot Hanselmans,现在我的服务在端口80和端口443上本地运行,并具有完全有效的SSL证书。它甚至运行在完全相同的主机名上

通过这些更改,现在在本地机器上运行应用程序和在Azure上运行应用程序之间没有任何配置差异。我可以在浏览器中转到,重定向到实时登录,登录,并成功重定向回服务。在浏览器中,一切正常。但是,它在应用程序中仍然不起作用

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

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

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

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

在遵循Henriks的指南之后,我能够加载符号并获得更多的信息:

“远程主机已强制关闭现有连接”

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


似乎Live Authentication server可能会强制终止连接,但仅当我使用应用程序进行身份验证时。同样,浏览器内的身份验证也可以。这一点,再加上/login/microsoftaccount是来自应用程序的帖子,似乎表明我从LiveClient.LoginAsync返回的身份验证令牌存在问题。我将做更多的挖掘…

目前,它的设置使您在本地运行和从本地主机访问服务时不需要身份验证。在这种情况下,匿名访问被允许通过(在云中运行时,这当然被禁用)

我们真的没有办法让您在本地进行身份验证,因为重定向URI不起作用(它们不能指向localhost,因为Facebook无法解析“localhost”)

一种选择是,我们可以以某种方式在本地模拟身份验证,并在不连接各种身份提供者的情况下为您提供令牌。我不确定到底会是什么样子,但这是我们可以考虑的。


Henrik

您是否在Live Connect项目中设置了移动客户端应用程序:是?我认为该设置旨在用于Live Connect SDK(客户端)流,而不是基于浏览器的(服务器)流。.NET后端尚不支持客户端流


您还需要确保在客户端上使用来触发服务器流

如果您转到浏览器并尝试使用
https://
而不是
http://
登录,它仍然有效吗?如果我没记错的话,Windows 8应用程序中的身份验证需要通过HTTPS完成。谢谢Carlos。这似乎没有解决这个问题。我已经更新了上面的问题,并且在端口443上使用有效的可信证书在本地完全启用了HTTPS。这仍然不起作用。我也尝试过,但没有成功。我还配置了对issexpress的外部访问,在web.config中输入了客户机密钥和客户机机密,并将客户机和服务器url添加到google的开发者仪表板中。Fiddler透露“无效客户”。谢谢Henrik。我理解在本地运行时不需要身份验证,但我需要能够唯一地标识用户。我的服务为每个用户存储了大量信息,而不知道他们是谁会破坏应用程序的用途。因此,它更多的是身份验证,而不是身份验证。当你们有时间的时候,请看我对上面问题的更新。我的本地服务现在使用有效的证书在80和443上运行。它还“模拟”我的azure-mobile.net url,这样Facebook就不必重定向到localhost。不幸的是,它仍然不起作用。你有没有找到一个修复或解决办法?和你一样,我并不需要对任何人进行“身份验证”,我需要测试一个经过身份验证的用户的场景,以确保他们正确地连接到应用程序中的数据。在live应用程序上进行远程调试是测试这一点的唯一方法吗?我必须盲目构建它?我很确定我尝试了这两种设置,但我可以再次测试。您的意思是,将其设置为“否”会导致它使用GET而不是POST点击LoginController吗?您能否提供有关这两个登录流之间差异的更多信息?Windows 8应用程序如何使用基于服务器的登录流而不是客户端登录流?只是将其更改为false并尝试再次登录。不允许方法的相同错误。看起来它仍在尝试发布帖子。我怀疑您可能在客户端使用了错误的登录方法,请参阅我的编辑。好的,这确实有效。然而,这种方法有两个重要的问题:首先,我的服务代码(以及登录名)都在一个共享PCL中处理。您请求的LoginAsync的单参数版本