Connessione a redis gestito con nome utente / password di autenticazione nodejs

Aug 15 2020

Modifica: dopo aver riflettuto sul problema, la vera domanda è: qual è un esempio di connessione a redis gestito di digitalocean con node-redis utilizzando tls?

Sono in grado di connettermi perfettamente con il client GUI redisinsight utilizzando nome utente / password, ma non riesco a connettermi con nodejs. È sullo stesso computer quindi nessun problema di firewall.

var redis = require('redis');
var client = redis.createClient(process.env.REDIS_PORT, process.env.REDIS_URL, {no_ready_check: true});
client.auth('password', function (err) {
    if (err) {
      console.log(err);
      return
    }
    console.log('auth')
});

Una cosa su cui sono confuso è dove inserire il nome utente? È solo "predefinito" ma la documentazione per node_redis non fornisce un modo per fornire un nome utente durante l'autenticazione.

L'errore è: AbortError: Redis connection lost and command aborted. It might have been processed.

Ecco la mia schermata di connessione di redisinsight leggermente anonima funzionante.

Come faccio a fare lo stesso in node-redis?

Risposte

2 LeoMurillo Aug 16 2020 at 07:36

Il AUTHcomando, come dichiarato nei documenti :

Quando vengono utilizzati gli ACL, la forma a singolo argomento del comando, in cui è specificata solo la password, presuppone che il nome utente implicito sia "predefinito".

Quindi, anche se stai usando Redis 6, dove sono supportati utenti aggiuntivi, la tua autenticazione per defaultdovrebbe funzionare.

L'errore che vedi è il risultato di una connessione interrotta , ad esempio hai perso in qualche modo la connessione con il server Redis. node-redissta affrontando uno dei due scenari (o entrambi): la connessione è scaduta oppure i tentativi di riconnessione hanno superato il numero massimo specificato in una configurazione. Vorrei ricontrollare le informazioni sulla connessione e come è configurato il server Redis.

Vedo che stai usando TLS, potresti trovare utile questo: Securing Node Redis

Se vuoi autenticare il client node-redis con un utente diverso, quando usi Redis 6, dovrai usare send_command, ma prima di dover rimuovere il AUTHcomando corrente , poiché attualmente node-redis non supporta il nuovo comando AUTH <username> <password>.

client['auth'] = null;
client.send_command('AUTH', ['<username>', '<password>'], redis.print);