class Restforce::Middleware::Authentication::JWTBearer

def claim_set

def claim_set
  {
    iss: @options[:client_id],
    sub: @options[:username],
    aud: @options[:host],
    iat: Time.now.utc.to_i,
    exp: Time.now.utc.to_i + 180
  }
end

def jwt_bearer_token

def jwt_bearer_token
  JWT.encode claim_set, private_key, 'RS256'
end

def params

def params
  {
    grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',
    assertion: jwt_bearer_token
  }
end

def private_key

def private_key
  OpenSSL::PKey::RSA.new(@options[:jwt_key])
end