Bien, lo descubrí.
En mi sistema local, tenía una versión más reciente del nodo, pero en mi versión implementada (en AWS ElasticBeanstalk) usaba v0.10.36.
Si observa el código de passport-local-mongoose
verás esto:
var pbkdf2DigestSupport = semver.gte(process.version, '0.12.0');
...
var pbkdf2 = function(password, salt, callback) {
if (pbkdf2DigestSupport) {
crypto.pbkdf2(password, salt, options.iterations, options.keylen, options.digestAlgorithm, callback);
} else {
crypto.pbkdf2(password, salt, options.iterations, options.keylen, callback);
}
};
Entonces, si las dos versiones diferentes del nodo tienen una por encima de 0.12.0 y otra por debajo, obtendrá una funcionalidad criptográfica diferente.