【发布时间】:2018-10-10 23:58:54
【问题描述】:
我正在开发一个支持多种身份验证方案(OAuth、Bearer 和 Basic)的 REST API。当Authorization 标头不存在或包含不受支持的方案时,服务会响应多个WWW-Authenticate 标头:
WWW-Authenticate: OAuth realm="myRealm"
WWW-Authenticate: Bearer realm="myRealm"
WWW-Authenticate: Basic realm="myRealm"
当请求包含带有支持的方案之一但凭据无效的 Authorization 标头时,我的服务应该以 all 支持的WWW-Authenticate 方案响应,还是只是请求中提供的方案?
例如,如果客户提供:
Authorization: Bearer invalid
我的服务是否应该只回复Bearer 质询?
WWW-Authenticate: Bearer realm="myRealm", error="invalid_token", error_description="token is malformed or represents invalid credentials"
或者它应该回应所有WWW-Authenticate 挑战?
WWW-Authenticate: Bearer realm="myRealm", error="invalid_token", error_description="token is malformed or represents invalid credentials"
WWW-Authenticate: OAuth realm="myRealm"
WWW-Authenticate: Basic realm="myRealm"
【问题讨论】:
-
回问:为什么不全部发送?
-
我没有在规范中找到任何明确的指导,并且除了尝试之外,为其他方案/领域增加挑战可能会使调用者感到困惑。这就是说,我同意,这还不足以成为 不 这样做的理由。我相应地添加了answer。
标签: rest http authentication oauth oauth-2.0