Dol*_*lph 26 rest restful-authentication http
身份验证服务允许禁用用户帐户(一种软删除).
如果服务器接收到禁用用户的身份验证请求,否则该服务器将返回401或403?使用任一状态代码,我将返回一条消息,指示该帐户已被禁用.
有关快速参考,HTTP/1.1规范的相关引用(强调我的):
401未经授权
该请求需要用户身份验证.响应必须包含WWW-Authenticate头字段(第14.47节),其中包含适用于所请求资源的质询.客户端可以使用合适的Authorization头字段重复请求(第14.8节).如果请求已包含授权凭据,则401响应表示已拒绝授权这些凭据.如果401响应包含与先前响应相同的挑战,并且用户代理已经尝试过至少一次认证,则应该向用户呈现响应中给出的实体,因为该实体可能包括相关的诊断信息.HTTP访问身份验证在"HTTP身份验证:基本和摘要访问身份验证"[43]中进行了说明.
403禁止
服务器理解请求,但拒绝履行请求. 授权无效,请求不应重复.如果请求方法不是HEAD并且服务器希望公开为什么请求没有得到满足,那么它应该描述实体中拒绝的原因.如果服务器不希望将此信息提供给客户端,则可以使用状态代码404(未找到).
Dol*_*lph 43
基于Roy T. Fielding编写的电子邮件,目前的HTTP规范中显然存在一个错误.
打算阅读规范的方式如下(使用上面的电子邮件引用):
401"Unauthenticated":
你不能这样做,因为你没有经过身份验证
403"未经授权":
用户代理发送了有效凭据但没有访问权限
因此,在禁用用户的情况下,403是正确的响应(404也是一个选项).
小智 11
在这种情况下,我有两个不同的答案.
语义选择 - 401未经授权.在这种情况下,您的客户端已提供凭据,并且已根据特定凭据拒绝该请求.如果客户端要使用不同的凭据集再次尝试,或者将来要重新启用该帐户,则相同的请求可能会成功.
安全选择 - 404 Not Found.许多服务只会为任何故障返回404,以避免信息泄露.Github立即浮现在我的脑海中.
来自通用API信息,在github的开发人员文档中:
未经身份验证的请求将返回404以防止任何类型的私人信息泄露.
对于我作为公共服务部署的内容,我可能会使用404来避免向攻击者提供有关其凭据尝试的线索.如果是仅供内部消费,或者在测试中,我可能会返回401.
归档时间: |
|
查看次数: |
60832 次 |
最近记录: |