Changeset 1750

Show
Ignore:
Timestamp:
08/20/08 11:39:14 (3 months ago)
Author:
dbryson
Message:


Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • hive/trunk/data_webapp/lib/worker_bee_authorization.rb

    r1748 r1750  
    55   
    66  class << self 
     7    # Configuration is loaded when this module is included in another (ActionController) 
     8    def included(base) 
     9      bee_config = YAML.load(ERB.new(IO.read("#{RAILS_ROOT}/config/worker_bee.yml")).result) 
     10      @@configuration = bee_config["bee"].symbolize_keys 
     11    end 
     12   
    713    def configuration=(config) 
    814      @@configuration = config 
     
    1218      @@configuration 
    1319    end 
     20     
    1421  end 
    1522   
     
    1825  # Check the request is properly signed 
    1926  def verify_signed_request 
    20     render :json => ["Not Allowed"], :status => 403 unless @@configuration["activate"] 
    21      
    22     unless valid_signed_request? 
     27    unless  @@configuration[:activate] && valid_signed_request? 
    2328      render :json => ["Unauthorized"], :status => 401 
    2429    end 
     
    2732  # Verify the incoming request 
    2833  def valid_signed_request? 
    29     auth_headers = request.headers["Authorization"] 
     34    auth_headers = request.headers["AUTHORIZATION"] 
    3035    method = request.method.to_s.upcase 
    31     date = request.headers["Date"] 
     36    date = request.headers["DATE"] 
    3237    path = request.path 
    33     contentType = request.headers["Content-Type"] 
     38    contentType = request.content_type 
    3439     
    3540    pieces = auth_headers.split(":") 
     
    3742      inKey = pieces[1] 
    3843      inSignature = pieces[2] 
    39       outSignature = sign_request(@@configuration["secret_key"].strip,method,path,date,contentType) 
     44      outSignature = sign_request(@@configuration[:secret_key].strip,method,path,date,contentType) 
    4045       
    41       (inKey.strip == @@configuration["access_key"].strip) && (inSignature.strip == outSignature.strip) 
     46      (inKey.strip == @@configuration[:access_key].strip) && (inSignature.strip == outSignature.strip) 
    4247    else 
    4348      false 
     
    4853  def sign_request(sk,method,path,date,content_type) 
    4954    data = [method,path,date,content_type].join("\n") 
     55    #puts "Controller signing: #{data}\n" 
    5056    digest   = OpenSSL::Digest::Digest.new('sha1') 
    5157    Base64.encode64(OpenSSL::HMAC.digest(digest, sk, data.to_s))