OAuth提供商的适当WWW-Authenticate标头

11
OAuth 1.0规范中建议使用以下WWW-Authenticate头响应:
WWW-Authenticate: OAuth realm="http://server.example.com/"

在这个头部添加其他信息数据是否合适?如果请求受保护资源失败,是否可以包含一些原因信息是合理的,例如:

WWW-Authenticate: OAuth realm="http://server.example.com/", access token invalid

那么这是否与响应头的目的相反?

3个回答

32

提醒那些偶然发现此处的人: OAuth 2.0承载令牌规范将“错误”,“错误说明”和“错误URI”属性添加到“WWW-Authenticate”头中,以报告其他错误信息,并指定何时应该使用它们。

例如:

 HTTP/1.1 401 Unauthorized
 WWW-Authenticate: Bearer realm="example",
                   error="invalid_token",
                   error_description="The access token expired"

9
我觉得这有点可疑。 WWW-Authenticate 头是由RFC指定的,似乎禁止您给出的示例。 OAuth规范说明,您可以包含由RFC定义的其他WWW-Authenticate字段,而不是只是在其末尾添加任意字符串。除非有一个定义良好的字段可以用于您的目的,否则我建议避免使用它。

你和汤姆的答案大致相似,但我会检查你的答案,因为它包含了相关RFC的链接。 - Jon Nylander
1
谢谢。在这种情况下,我会为Tom的答案点赞,因为我们在同一分钟内回答了问题。 - Gian

8
这样做违反了规范,即使不违反规范,也可能会变成这样:
realm="http://server.example.com", oauth_error="access token invalid"

我建议使用响应正文来处理此类情况,或者可能是 X-OAuth-Error 标头。


1
谢谢,你当然是对的。我已经开始使用响应正文来处理这些类型的消息了。但是,一些库似乎希望从标头中获取更多的信息。虽然它们可能实现得不太好。 - Jon Nylander

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接