ios - 应从 Azure 移动服务自定义登录返回什么 HTTPResponse 代码?

标签 ios authentication azure-mobile-services

我在一个 Azure 移动服务自定义 API 项目中,按照此处所述实现了自定义身份验证:
https://azure.microsoft.com/en-us/documentation/articles/mobile-services-dotnet-backend-get-started-custom-authentication/ ,
一位 iOS 客户端开发人员提出了一个问题,即使用此自定义登录(不使用客户端库)失败,显然是因为此 401 响应 不符合 HTTP 身份验证协议(protocol)(无身份验证质询 header )。这里的建议是这种场景不要用401,改用403。 有人可以详细说明这里的问题以及最好的通用方法是什么吗?
返回的 401 是否应该增加一些额外的 header ?为什么 iOS 会遇到这个问题?我还没有确认 AMS 没有发送 header 。

最佳答案

HTTP 403 表示禁止,因为我们知道您是谁,但您无权获取或操作此资源。我认为这不是您此处案例的正确回应。

HTTP 401 是正确的响应,但它应该有一个 WWW-Authenticate响应中的 header 以标识用户应进行身份验证的方案和领域。

您需要手动将此 header 添加到您的响应中。

response.Headers.WwwAuthenticate.Add(new AuthenticationHeaderValue("Basic",
    "realm=\"" + AuthRealm + "\""));

关于ios - 应从 Azure 移动服务自定义登录返回什么 HTTPResponse 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32716366/

相关文章:

c# - 获取新行 - Azure 移动服务

ios - iPhone日历导航 Controller

objective-c - NSFetchedResultsController 不显示来自后台线程的更改

ios - 如何在 Swift 3 中使用 unsafeDowncast

php - 为什么 "Forgotten Password"不好?

asp.net-mvc - 如何在Azure移动应用程序和ASP.Net MVC Web应用程序之间共享数据

xcode - 外部设备上的 iOS 远程调试

java - Tomcat - 了解 CredentialHandler

php - CakePHP 3 Ldap 身份验证问题和说明

javascript - Azure 移动服务 : Get Server DateTime and compare it