如何从Azure函数返回403 Forbidden

时间:2018-01-12 14:00:25

标签: azure-functions

我正在c#中编写Azure函数,执行一些自定义授权。如果授权失败,我想返回403.我尝试了以下内容:

  1. return new ForbidResult(); 这会给出错误消息:

      

    '未指定authenticationScheme,且找不到DefaultForbidScheme'

  2. return new StatusCodeResult(403); 这只是在Firefox和Edge中给我空白页。

  3. 思想?

2 个答案:

答案 0 :(得分:1)

是HTTP触发的功能吗?

return new HttpResponseMessage(HttpStatusCode.Forbidden);

答案 1 :(得分:0)

对于自定义身份验证失败的HttpTrigger函数(由于缺少凭据或权限不足或相似),我会这样返回:

对于参考rfc2616,401更适合在auth 范围内发生大nono的情况。根据w3 403的意思

  

服务器理解请求,但拒绝履行请求。授权无效,请求不应重复。如果请求方法不是HEAD并且服务器希望公开为什么请求没有得到满足,那么它应该描述实体中拒绝的原因。如果服务器不希望将此信息提供给客户端,则可以使用状态代码404(未找到)。

其中401州

  

请求需要用户身份验证。响应必须包含WWW-Authenticate头字段(第14.47节),其中包含适用于所请求资源的质询。客户端可以使用合适的Authorization头字段重复请求(第14.8节)。如果请求已包含授权凭据,则401响应表示已拒绝授权这些凭据。如果401响应包含与先前响应相同的挑战,并且用户代理已经尝试过至少一次认证,则应该向用户呈现响应中给出的实体,因为该实体可能包括相关的诊断信息。 “HTTP身份验证:基本和摘要访问身份验证”中介绍了HTTP访问身份验证。

来自Chris的这件事也应该有效;)