class DMAO::WardenJWT::Strategy
Public Instance Methods
authenticate!()
click to toggle source
# File lib/DMAO/WardenJWT/strategy.rb, line 14 def authenticate! valid_jwt? ? success!(User.from_jwt_claims(jwt_claims)) : fail!(:invalid_jwt) end
bearer_token()
click to toggle source
# File lib/DMAO/WardenJWT/strategy.rb, line 24 def bearer_token pattern = /^Bearer / header = request.env['HTTP_AUTHORIZATION'] # <= env header.gsub(pattern, '') if header && header.match(pattern) end
decode_jwt()
click to toggle source
# File lib/DMAO/WardenJWT/strategy.rb, line 56 def decode_jwt logger = ::Logger.new(STDOUT) verify_iat = ENV['JWT_VERIFY_IAT'] verify_aud = ENV['JWT_VERIFY_AUD'] verify_iss = ENV['JWT_VERIFY_ISS'] jwt_secret = ENV['JWT_SECRET'] jwt_issuer = ENV['JWT_ISSUER'] jwt_audience = ENV['JWT_AUDIENCE'] begin decoded_token = ::JWT.decode jwt, jwt_secret, true, { :verify_iat => verify_iat, :iss => jwt_issuer, :verify_iss => verify_iss, :aud => jwt_audience, :verify_aud => verify_aud, :algorithm => 'HS256'} rescue ::JWT::ExpiredSignature logger.info('JWT - Expired Signature') return nil rescue ::JWT::InvalidIssuerError logger.info('JWT - Invalid Issuer') return nil rescue ::JWT::InvalidAudError logger.info('JWT - Invalid Audience') return nil rescue ::JWT::InvalidIatError logger.info('JWT - Invalid Issued At Timestamp') return nil rescue ::JWT::VerificationError logger.info('JWT - Signature Verification Failed') return nil rescue ::JWT::DecodeError logger.info('JWT - Error decoding JWT') return nil end decoded_token end
jwt()
click to toggle source
# File lib/DMAO/WardenJWT/strategy.rb, line 30 def jwt if params["jwt"] return params["jwt"] end if !bearer_token.nil? && !bearer_token.empty? return bearer_token end nil end
jwt_claims()
click to toggle source
# File lib/DMAO/WardenJWT/strategy.rb, line 44 def jwt_claims jwt = decode_jwt if jwt.nil? nil else jwt[0] end end
store?()
click to toggle source
# File lib/DMAO/WardenJWT/strategy.rb, line 20 def store? false end
valid?()
click to toggle source
# File lib/DMAO/WardenJWT/strategy.rb, line 10 def valid? !jwt.nil? && !jwt.empty? end
valid_jwt?()
click to toggle source
# File lib/DMAO/WardenJWT/strategy.rb, line 93 def valid_jwt? if decode_jwt.nil? return nil end true end