启用Azure Active Directory身份验证时,Azure移动应用程序将Http POST调用重定向到GET

时间:2017-05-31 01:53:15

标签: azure azure-mobile-services azure-active-directory azure-authentication

我正在浏览https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-dotnet-backend-how-to-use-server-sdk上找到的Azure移动应用后端教程的.NET部分

我使用默认示例TodoItemController很好地设置了所有内容。我通过向PostToDoItem控制器方法添加代码,将推送通知添加为instructed

然后我使用Postman测试了POST调用并输入了一个简单的新项目:enter image description here

我在Xamarin.Forms移动应用程序中获得了成功的推送通知:

enter image description here

但是,当我在我的移动应用服务中启用Azure Active Directory身份验证,同时离开"允许匿名请求(无操作)"在,我不再能够与Postman发送POST电话。更具体地说,看起来App Service收到POST请求,但会立即重定向它并产生GET请求。这会导致调用控制器中的GetAllToDoItems方法而不是PostToDoItem方法。我在日志流中看到了这一点:

 > 2017-05-31T01:33:46  PID[4292] Verbose     Received request: POST
> http://XYZ.azurewebsites.net/tables/TodoItem?ZUMO-API-VERSION=2.0.0
> 2017-05-31T01:33:46  PID[4292] Information Redirecting:
> https://XYZ.azurewebsites.net/tables/TodoItem?ZUMO-API-VERSION=2.0.0
> 2017-05-31T01:33:46  PID[4292] Verbose     Received request: GET
> https://XYZ.azurewebsites.net/tables/TodoItem?ZUMO-API-VERSION=2.0.0
> 2017-05-31T01:33:46  PID[4292] Verbose     [Routes(Preview)] No
> authorization configuration was found. 2017-05-31T01:33:46  PID[4292]
> Information Request, Method=GET,
> Url=https://XYZ.azurewebsites.net/tables/TodoItem?ZUMO-API-VERSION=2.0.0,
> Message='https://XYZ.azurewebsites.net/tables/TodoItem?ZUMO-API-VERSION=2.0.0'
> 2017-05-31T01:33:46  PID[4292] Information Message='TodoItem',
> Operation=DefaultHttpControllerSelector.SelectController
> 2017-05-31T01:33:46  PID[4292] Information
> Message='XYZService.Controllers.TodoItemController',
> Operation=DefaultHttpControllerActivator.Create 2017-05-31T01:33:46 
> PID[4292] Information
> Message='XYZService.Controllers.TodoItemController',
> Operation=HttpControllerDescriptor.CreateController
> 2017-05-31T01:33:46  PID[4292] Information Message='Selected action
> 'GetAllTodoItems()'',
> Operation=ApiControllerActionSelector.SelectAction

我希望这个POST调用与我将App Service身份验证设置为OFF时的工作方式相同,因为我告诉Azure在匿名请求进入时不采取任何操作。我在这里误解了什么吗?提前谢谢!

1 个答案:

答案 0 :(得分:3)

启用应用服务的身份验证/授权后,如果我们使用 HTTP 协议发送请求,服务器会通过302响应将其重定向到 HTTPS

要使其在此方案中有效,您可以使用 HTTPS 协议而非 HTTP 发送请求。如果您启用允许匿名请求(无操作)功能,则此功能应该有效。