class GrapeAPISignature::Middleware::Auth
Attributes
app[RW]
authenticator[RW]
env[RW]
max_request_age[RW]
Public Class Methods
default_authenticator(&block)
click to toggle source
# File lib/grape_api_signature/middleware/auth.rb, line 9 def self.default_authenticator(&block) @default_authenticator = block if block_given? @default_authenticator end
new(app, max_request_age = 900, &authenticator)
click to toggle source
# File lib/grape_api_signature/middleware/auth.rb, line 15 def initialize(app, max_request_age = 900, &authenticator) self.app = app self.authenticator = authenticator || self.class.default_authenticator self.max_request_age = max_request_age end
Public Instance Methods
_call(env)
click to toggle source
# File lib/grape_api_signature/middleware/auth.rb, line 25 def _call(env) self.env = env @auth_request = nil @auth = nil @authenticator_result = nil return unauthorized unless auth_request.provided? return bad_request unless auth_request.aws4? if valid? on_valid else unauthorized end end
call(env)
click to toggle source
# File lib/grape_api_signature/middleware/auth.rb, line 21 def call(env) dup._call(env) end
Protected Instance Methods
auth()
click to toggle source
# File lib/grape_api_signature/middleware/auth.rb, line 50 def auth @auth ||= Authorization.new(request.request_method, auth_request.headers.merge('Content-Type' => request.content_type), URI(request.url), auth_request.body, max_request_age) end
auth_request()
click to toggle source
# File lib/grape_api_signature/middleware/auth.rb, line 58 def auth_request @auth_request ||= AuthRequest.new(env) end
authenticator_result()
click to toggle source
# File lib/grape_api_signature/middleware/auth.rb, line 78 def authenticator_result @authenticator_result ||= @authenticator.call(auth.user_id, auth.region, auth.service) end
challenge()
click to toggle source
# File lib/grape_api_signature/middleware/auth.rb, line 66 def challenge 'AWS4-HMAC-SHA256' end
on_valid()
click to toggle source
# File lib/grape_api_signature/middleware/auth.rb, line 45 def on_valid env['REMOTE_USER'] = auth.user_id app.call(env) end
request()
click to toggle source
# File lib/grape_api_signature/middleware/auth.rb, line 62 def request auth_request.request end
secret_key()
click to toggle source
# File lib/grape_api_signature/middleware/auth.rb, line 74 def secret_key authenticator_result end
valid?()
click to toggle source
# File lib/grape_api_signature/middleware/auth.rb, line 70 def valid? secret_key && auth.authentic?(secret_key) end