如果我只使用OpenID,我应该在401s上传递WWW-Authenticate标头?

Jam*_*sen 34 openid authentication http http-headers

HTTP规范声明:

10.4.2 401未经授权

该请求需要用户身份验证.响应必须包含WWW-Authenticate头字段(第14.47节),其中包含适用于所请求资源的质询.

如果我支持的唯一登录方案是OpenID(或CAS或OAuth令牌,等等),我应该在这个字段中添加什么?也就是说,如何指示客户端需要预先验证并创建会话,而不是尝试与每个请求一起发送凭据?

在您回答之前,"不要发送401;发送3xx重定向到OpenID登录页面",对于非HTML客户端呢?例如,Stack Overflow如何执行我的自定义软件可以与之交互的API?

Chr*_*yle 26

根据RFC2617,auth-scheme可以是任何东西; 如果你真的想要一个401,你就不会在技术上破坏规范WWW-Authenticate: OpenID realm="My Realm" location="http://my/login/location".话虽如此,当你这样做时,其他人的代码的行为当然是未定义的.:-)

  • 由[RFC 7235](https://tools.ietf.org/html/rfc7235#section-4.1)更新。 (2认同)