4

我使用当前Azure Mobile Apps SDKJavaScript客户端和使用以下tutorial。我已经在Azure中注册了所有主要提供商,他们都包含正确配置的应用ID和密码。我使用SDK中的样板代码调用Azure Mobile Apps,提供者登录(Twitter,Google,MSFT,FB)会在我的Web应用程序中弹出一个窗口并允许登录进行身份验证。认证工程Azure移动应用身份验证403在回调

问题是回到我的原始web应用程序的回调过程。我收到一个403 (Forbidden)错误,并且以下内容显示在浏览器窗口中:

您没有权限查看此目录或页面。

下面是一些示例回调网址(为简便起见混淆值)

https://myservice.azurewebsites.net/.auth/login/facebook/callback?code=AQB123&state=nonce%3D3
https://myservice.azurewebsites.net/.auth/login/twitter/callback?oauth_token=FhGv&oauth_verifier=abc123
https://myservice.azurewebsites.net/.auth/login/google/callback?state=nonce%3Dc&authuser=0&session_state=4cf501&prompt=none#

的事情是,如果我采取任何完整的网址,上面并粘贴到一个新的浏览器窗口并拨打电话我在浏览器中收到以下Azure消息:

您已经

OK成功签约所以工作,但它似乎回调到应用程序的登录和认证与403 forbidden失败。下面是我试过的东西:

  1. 允许在服务器上的“*”的起源为CORS在Azure中配置我的Azure Mobile Apps例如
  2. 允许“*”为CORS起源于我ASP.NET Core Web应用程序
  3. 设置一个超级非限制性Content-Security-Policyindex.html

<meta http-equiv ="Content-Security-Policy" content="default-src * 'unsafe-inline'; script-src * 'unsafe-inline'; connect-src *; img-src *; style-src * 'unsafe-inline'">

这个过程和代码对我来说并不陌生。这一切都用于在旧Azure Mobile Services实例中工作,该实例现在已经退役,支持Azure Mobile Apps(上面没有提到content-security-policy;我以前从未需要)。我不认为这是我的一个JavaScript代码问题,或者是因为在调用WindowsAzure.MobileServiceClient时,甚至不会从此进程返回承诺。

有没有人知道什么阻止了完整的进程,并在验证成功后从提供程序登录窗口中导致此403 forbidden

更新:我创建了这个博客中,帮助他人,并提供详尽的解释:Configure Azure Mobile App Authentication Server-Side for Use With JavaScript Clients

+1

我能找到的唯一的东西(你可能已经看到了)在官方文档中是这样的:https://azure.microsoft.com/en-gb/documentation/articles/app-service-mobile-html-如何使用客户端库/#认证 –

+0

@MartynC - 你知道我一直在使用那个确切的链接,但有一个部分在Azure门户中没有工作。有指示可以进入**资源管理器**并修改配置以允许重定向URL。我有一天尝试去那里,Azure永远不会打开页面;它只是空着。 ......我从未回去再试。猜猜看,这是行得通的!因此,如果您提供的答案详细介绍了该链接中名为“如何为您的移动应用服务配置外部重定向网址”的部分中的要求,我会给您奖励 – atconway

+0

当然,感谢您让我发布 –

回答

4

看起来这可能重定向,您可以在门户网站的URL配置有关。看看这个documentation。本地运行可能会导致问题,因为默认情况下,应用程序服务身份验证仅配置为允许您的移动应用程序后端进行访问。使用以下步骤来更改应用程序服务设置运行服务器时本地启用身份验证:

  1. 登录到Azure的门户
  2. 导航到移动应用的后端。
  3. 在开发工具菜单中选择资源管理器。
  4. 点击开始在新选项卡或窗口中打开移动应用程序后端的资源管理器。
  5. 为您的应用展开config> authsettings节点。
  6. 单击编辑按钮以启用对资源的编辑。
  7. 找到allowedExternalRedirectUrls元素,该元素应该为null。添加您的网址,在一个阵列:

"allowedExternalRedirectUrls": [ "http://localhost:3000","https://localhost:3000"],

与您的服务,在本例中是http://localhost:3000本地服务的网址阵列中更换网址。您也可以使用http://localhost:4400,具体取决于您的应用程序的配置。

  1. 点击页面顶部的Read/Write,然后点击PUT保存更新。

您还需要在同一环回的网址添加到白名单CORS设置:

  1. 导航回到Azure的门户。
  2. 导航到您的移动应用程序后端。
  3. 单击API菜单中的CORS。
  4. 在空的Allowed Origins文本框中输入每个URL。一个新的文本框被创建。
  5. 单击保存

后台更新后,您将能够使用新的环中网址的应用程序。

+0

您在这里救了我的培根。非常感谢您分享您的知识! –

相关问题