mb2*_*b21 5 authentication rest http-status-codes
在构建不使用HTTP基本身份验证的REST API (但是其他类似api-key)并且客户端提供无效凭据时,您应该返回什么HTTP状态代码?401未经授权或403禁止?
该IANA HTTP状态代码注册地列出了RFC7235,第3.1节的"401未授权",它规定的责任:
生成401响应的服务器必须发送WWW-Authenticate头字段
这是否意味着REST API在使用HTTP基本身份验证时应该只返回401,而不是在例如通过api-key使用身份验证时?
Django 似乎同意:
HTTP 401响应必须始终包含WWW-Authenticate标头,该标头指示客户端如何进行身份验证.HTTP 403响应不包括WWW-Authenticate标头.
将使用的响应类型取决于身份验证方案.
虽然理查森似乎不同意:
401("未经授权")
重要性:高.
客户端尝试在受保护的资源上运行,但未提供正确的身份验证凭据.它可能提供了错误的凭据,或者根本没有.凭证可以是用户名和密码,API密钥或认证令牌 - 无论所讨论的服务是期望的.客户端通常会发出URI请求并接受401,因此它知道要发送什么类型的凭据以及采用何种格式.[...]
小智 9
您假设www-authenticate值必须是基本的.您可以返回不同的值,例如"API-key"作为需要发生的auth类型.因此,随意返回401和www-authenticate标头以及其他一些值.您甚至可以使用不同的值返回多个标头,指示您的应用支持的不同类型的身份验证.
| 归档时间: |
|
| 查看次数: |
6335 次 |
| 最近记录: |