如何在身份验证失败时格式化标题WWW-Authenticate

时间:2014-03-20 21:29:31

标签: http rest authentication

我实现了一个REST API,它还提供了对用户进行身份验证的功能。身份验证要求用户发送POST请求,并在正文中包含以下数据:

{
  "userOrEmail": "spook",
  "passowrd": "Test1234"
}

如果用户名和密码匹配,则用户从服务器获取令牌,而如果他们没有,则服务器返回401 Unauthorized,具有以下标题:

WWW-Authenticate: Credentials realm="http://localhost:9000/auth/users/credentials"

那个标题是否可以接受? realm包含用户可以尝试再次进行身份验证的位置。

2 个答案:

答案 0 :(得分:0)

它似乎是可以接受的,但在非常特殊的条件下可能不是最佳的。来自RFC1945

  

领域值(区分大小写)与正在访问的服务器的规范根URL组合,定义了保护空间。这些领域允许将服务器上受保护的资源划分为一组保护空间,每个保护空间都有自己的身份验证方案和/或授权数据库。领域值是一个字符串,通常由原始服务器分配,可能具有特定于身份验证方案的其他语义。

所以,你可以,但我可能会对使用相同身份验证的多个应用程序产生偏执,如果他们要共享相同的域名,则会无意中进行交叉身份验证。更好的方法是通过应用程序隔离领域,只是为了安全起见。

答案 1 :(得分:0)

不,这是不可接受的。

a)没有名为"凭证"。

的认证方案

b)"领域的目的"参数不同。