如果我只使用OpenID,那么在401状态码中的WWW-Authenticate头部该传递什么?

34
HTTP规范规定:
10.4.2 401未授权
请求需要用户身份验证。响应必须包含一个WWW-Authenticate头字段(第14.47节),其中包含适用于所请求资源的挑战。
如果我只支持OpenID(或CAS,或OAuth令牌等)作为登录方案,那么我应该在此字段中放什么?也就是说,如何指示客户端需要进行预身份验证并创建会话,而不是尝试随每个请求发送凭据?
在回答“不要发送401;发送3xx重定向到OpenID登录页面”之前,对于非HTML客户端呢?例如,Stack Overflow如何与我的自定义软件交互的API?
2个回答

26
根据RFC2617auth-scheme可以是任何东西。如果你真的想要一个401状态码,那么像这样捏造一些东西并不会技术上违反规范:WWW-Authenticate: OpenID realm="My Realm" location="http://my/login/location"。尽管如此,当你这样做时,其他人的代码行为肯定是未定义的。 :-)

2
RFC 7235更新。 - Константин Ван

3

如果没有任何替代规范,那么OAuth Discovery spec将指示应该将什么内容放入WWW-Authenticate头部。


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