请求中的HTTP授权标头一致性

时间:2013-01-03 16:00:22

标签: java http rest authentication

HTTP规范说;

HTTP访问身份验证在" HTTP身份验证中描述:       基本和摘要访问认证" [43]。如果是请求       经过身份验证和指定的域,相同的凭据应该是       对该领域内的所有其他请求有效(假设为       认证方案本身并不需要,例如       作为根据挑战值或使用而变化的凭证       同步时钟)。

我真的不明白这意味着什么,但是我的情况是这里有什么反对HTTP规范的吗?我使用Java Rest服务

  • 客户端使用 HTTP Basic
  • 使用HTTP授权标头发送用户名:密码
  • 服务器发回令牌
  • 现在,客户端使用 HTTP基本用户名:令牌,在HTTP授权标头仍然中发送自定义授权令牌而不是密码仍然

现在这感觉不对,因为我真正使用auth令牌做的事情并不是真正的HTTP基本授权。在请求之间使用相同的标头也是不一致的。

但另一方面,我不想为令牌交换创建另一个自定义标头。因为当您使用自定义标头时,它很难使用测试工具对它们进行编码。请求之间仍然存在不一致的标头。

注意:这些请求引用不同的端点

你有什么建议?

1 个答案:

答案 0 :(得分:0)

如果你这样做,既然你使用相同的标题,那么当登录是实际登录而不是你的令牌时,你不需要服务器端逻辑来区分吗?在一天结束时,HTTP授权已经是一个令牌(只是用户名/密码字符串的简单编码版本),所以在所有情况下你都收到一个令牌,现在你必须解码它,决定它是否是你的一个会话令牌,或者如果它是用户名/密码,因此检查两个“好令牌”来源。

我会建议不要这样做,但不是因为你违反了标准,它只是让人感到困惑。

为什么首先需要将用户名/密码更改为令牌?您是否重定向到不再需要HTTP Basic Auth的端点?