【问题标题】:What should I pass for the WWW-Authenticate header on 401s if I'm only using OpenID?如果我只使用 OpenID,我应该为 401 上的 WWW-Authenticate 标头传递什么?
【发布时间】:2010-10-30 17:24:18
【问题描述】:

HTTP 规范指出:

10.4.2 401 未经授权

请求需要用户身份验证。响应必须包含一个 WWW-Authenticate 包含适用于所请求资源的质询的标头字段(第 14.47 节)。

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

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

【问题讨论】:

    标签: http authentication openid http-headers


    【解决方案1】:

    根据RFC2617auth-scheme可以是任何东西;如果你真的想要一个 401,你并没有技术上通过编造像 WWW-Authenticate: OpenID realm="My Realm" location="http://my/login/location" 这样的东西来破坏规范。话虽如此,当你这样做时其他人的代码的行为当然是未定义的。 :-)

    【讨论】:

    【解决方案2】:

    有一个OAuth Discovery spec 表示要在 WWW-Authenticate 标头中添加什么——如果该规范在没有替代规范的情况下还没有过时。

    【讨论】:

      猜你喜欢
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 2018-07-02
      • 1970-01-01
      • 2014-04-10
      • 2013-10-20
      • 2016-06-02
      • 2018-10-19
      相关资源
      最近更新 更多