Rest 多种身份验证方案和WWW身份验证挑战

Rest 多种身份验证方案和WWW身份验证挑战,rest,http,authentication,oauth,oauth-2.0,Rest,Http,Authentication,Oauth,Oauth 2.0,我正在开发一个RESTAPI,它支持多种身份验证方案(OAuth、Bearer和Basic)。当授权标头不存在或包含不受支持的方案时,服务将使用多个WWW-Authenticate标头进行响应: WWW-Authenticate: OAuth realm="myRealm" WWW-Authenticate: Bearer realm="myRealm" WWW-Authenticate: Basic realm="myRealm" 当请求包含带有一个受支持方案但凭据无效的授权标头时,我的服务

我正在开发一个RESTAPI,它支持多种身份验证方案(
OAuth
Bearer
Basic
)。当
授权
标头不存在或包含不受支持的方案时,服务将使用多个
WWW-Authenticate
标头进行响应:

WWW-Authenticate: OAuth realm="myRealm"
WWW-Authenticate: Bearer realm="myRealm"
WWW-Authenticate: Basic realm="myRealm"
当请求包含带有一个受支持方案但凭据无效的
授权
标头时,我的服务应该使用所有受支持的
WWW-Authenticate
方案响应,还是仅使用请求中提供的方案响应

例如,如果客户机提供:

Authorization: Bearer invalid
我的服务是否应该只响应
承载挑战

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"

编辑:似乎提供了一个建议,虽然它不是具体的。我相应地添加了一个。

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

4.1。WWW认证

“WWW-Authenticate”标头字段表示身份验证 适用于目标资源的方案和参数

WWW Authenticate=1#挑战

生成401(未经授权)响应的服务器必须发送 WWW验证标头字段至少包含一个质询。A. 服务器可能会在其他响应中生成WWW认证头字段 指示提供凭据(或其他凭据)的消息 凭据)可能会影响响应


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

4.1。WWW认证

“WWW-Authenticate”标头字段表示身份验证 适用于目标资源的方案和参数

WWW Authenticate=1#挑战

生成401(未经授权)响应的服务器必须发送 WWW验证标头字段至少包含一个质询。A. 服务器可能会在其他响应中生成WWW认证头字段 指示提供凭据(或其他凭据)的消息 凭据)可能会影响响应


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