【问题标题】:Multiple Authentication Schemes and WWW-Authenticate Challenges多重身份验证方案和 WWW 身份验证挑战
【发布时间】:2018-10-10 23:58:54
【问题描述】:

我正在开发一个支持多种身份验证方案(OAuthBearerBasic)的 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"

编辑:RFC 7235 似乎提供了一个建议,尽管它并不具体。我相应地添加了answer

【问题讨论】:

  • 回问:为什么全部发送?
  • 我没有在规范中找到任何明确的指导,并且除了尝试之外,为其他方案/领域增加挑战可能会使调用者感到困惑。这就是说,我同意,这还不足以成为 这样做的理由。我相应地添加了answer

标签: rest http authentication oauth oauth-2.0


【解决方案1】:

虽然不是严格要求,但RFC 7235 似乎建议应该返回所有 支持的身份验证方案。这将为调用者提供最多的信息,前提是他们能够正确解析这些标头。

4.1。 WWW-认证

“WWW-Authenticate”头域表示认证 适用于目标资源的方案和参数。

WWW-Authenticate = 1#challenge

生成 401(未经授权)响应的服务器必须发送 WWW-Authenticate 标头字段包含至少一个质询。一个 服务器可以在其他响应中生成一个 WWW-Authenticate 头域 指示提供凭据(或不同 凭据)可能会影响响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-05
    • 2012-10-14
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2021-06-20
    相关资源
    最近更新 更多