我在一个 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/