class Angus::Authentication::Client
Constants
- AUTHENTICATION_HEADER
- BAAS_AUTHENTICATION_HEADER
- BAAS_SESSION_HEADER
- DATE_HEADER
Public Class Methods
new(settings)
click to toggle source
# File lib/angus/authentication/client.rb, line 14 def initialize(settings) unless settings[:public_key] && settings[:private_key] warn "No authentication info provided, angus-authentication has been disabled for: #{settings[:service_id]}" @enabled = false return end @enabled = true @public_key = settings[:public_key] @private_key = settings[:private_key] @store = RedisClient.new(settings[:store] || {}) end
Public Instance Methods
prepare_request(request, http_method, script_name)
click to toggle source
# File lib/angus/authentication/client.rb, line 28 def prepare_request(request, http_method, script_name) return unless @enabled date = Date.today auth_token = generate_auth_token(date, http_method, script_name) request[DATE_HEADER] = date.httpdate request[AUTHENTICATION_HEADER] = generate_auth_header(auth_token) session_auth_token = generate_session_auth_token(date, http_method, script_name) request[BAAS_AUTHENTICATION_HEADER] = generate_auth_header(session_auth_token) end
store_session_private_key(response)
click to toggle source
# File lib/angus/authentication/client.rb, line 41 def store_session_private_key(response) return unless @enabled session_key_seed = extract_session_key_seed(response) return unless session_key_seed session_key = generate_session_private(session_key_seed) @store.store_session_key(@public_key, session_key) end
Private Instance Methods
auth_data(date, http_method, script_name)
click to toggle source
# File lib/angus/authentication/client.rb, line 71 def auth_data(date, http_method, script_name) "#{date.httpdate}\n#{http_method}\n#{script_name}" end
extract_session_key_seed(response)
click to toggle source
# File lib/angus/authentication/client.rb, line 63 def extract_session_key_seed(response) if response.is_a?(Hash) response.find { |k, v| k.upcase == BAAS_SESSION_HEADER.upcase }.last else response[BAAS_SESSION_HEADER] end end
generate_auth_header(auth_token)
click to toggle source
# File lib/angus/authentication/client.rb, line 79 def generate_auth_header(auth_token) "#@public_key:#{auth_token}" end
generate_auth_token(date, http_method, script_name)
click to toggle source
# File lib/angus/authentication/client.rb, line 59 def generate_auth_token(date, http_method, script_name) Digest::SHA1.hexdigest("#@private_key\n#{auth_data(date, http_method, script_name)}") end
generate_session_auth_token(date, http_method, script_name)
click to toggle source
# File lib/angus/authentication/client.rb, line 54 def generate_session_auth_token(date, http_method, script_name) session_private_key = @store.get_session_key(@public_key) Digest::SHA1.hexdigest("#{session_private_key}\n#{auth_data(date, http_method, script_name)}") end
generate_session_private(key_seed)
click to toggle source
# File lib/angus/authentication/client.rb, line 75 def generate_session_private(key_seed) Digest::SHA1.hexdigest("#@private_key\n#{key_seed}") end