在Rails API令牌认证中,www-Authenticate头的realm =“Application”部分是什么?

时间:2015-09-28 14:44:47

标签: ruby-on-rails api

我有一个使用此控制器的rails应用程序:

class EpisodesController < ApplicationController
  before_action :authenticate

  def index
    episodes = Episode.all
    render json: episodes, status: 200
  end

  protected
    def authenticate
      authenticate_or_request_with_http_token do |token, options|
        User.find_by(auth_token: token)
      end
    end
end

如果我发送此卷曲请求,我会使用这些标题返回此响应:

$ curl -IH "Authorization: Token token=fake" http://localhost:3000/episodes.json
HTTP/1.1 401 Unauthorized 
Content-Type: text/html; charset=utf-8
WWW-Authenticate: Token realm="Application"

www-authenticate标头用于什么?这只是惯例吗?什么是realm =“应用程序”用于?我读到了这个:

  

令牌部分表示给定资源使用令牌   认证。该URI下的资源目前是其中的一部分   “应用”领域。领域值允许受保护的资源   划分为不同的保护空间集,每个保护空间都有   自己的访问政策。

但我不明白......

1 个答案:

答案 0 :(得分:7)

WWW-Authenticate标题必须包含在401个未经授权的回复中(请参阅HTTP 1.1 RFC),因此这不仅仅是一个惯例。

使用该值可以指示支持哪种身份验证机制(在本例中为Token,另一个身份验证方案可以为Basic进行基本身份验证)。领域可以设置为您想要的任何值,并应标识安全区域。如果是基本身份验证,则此值将显示在登录对话框中。