lib/serverless_hub/authorizer.rb in serverless_hub-1.0.4 vs lib/serverless_hub/authorizer.rb in serverless_hub-1.0.5
- old
+ new
@@ -1,7 +1,7 @@
-require 'jwt'
-require 'json/jwt'
+require "jwt"
+require "json/jwt"
require "rest-client"
module ServerlessHub
class AuthorizerTokenDecoder
def initialize(app)
@@ -15,49 +15,47 @@
if tokens.present?
claims = tokens[0]
env["lambda.event"]["requestContext"]["authorizer"] = {
"principalId" => claims["sub"],
- "claims" => claims
+ "claims" => claims,
}
end
end
return @app.call(env)
end
def self.jwks
- RestClient.get(ENV["JWKS_URL"] || '')
+ RestClient.get(ENV["JWKS_URL"] || "")
end
private
- def decoded_token(token)
- if token.present? && token.starts_with?("Bearer ")
- token = token[7, token.length]
- end
- JWT.decode token, jwk_set.first.to_key, true, { algorithm: 'RS256' } rescue ""
+ def decoded_token(token)
+ token = token.split(" ").last
+ JWT.decode token, jwk_set.first.to_key, true, { algorithm: "RS256" } rescue ""
end
def jwk_set
@jwk_set ||= JSON::JWK::Set.new(
JSON.parse(
AuthorizerTokenDecoder.jwks
)
)
end
end
-
+
class Authorizer
def initialize(app)
@app = app
end
-
+
def call(env)
if env["lambda.event"] && env["lambda.event"]["requestContext"]
env["authorizer"] = env["lambda.event"]["requestContext"]["authorizer"]
end
-
+
return @app.call(env)
end
end
end