Kimlik doğrulama kullanıcı adı / şifre düğümleri ile yönetilen redis'e bağlanma

Aug 15 2020

Düzenleme: Konu hakkında düşündükten sonra asıl soru, digitalocean'ın yönetilen redis'ine tls kullanarak node-redis ile bağlanmanın bir örneğidir?

Kullanıcı adı / parola kullanarak redisinsight GUI istemcisine gayet iyi bağlanabiliyorum, ancak nodejs ile bağlanamıyorum. Aynı bilgisayarda olduğundan güvenlik duvarı sorunu yok.

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')
});

Kafam karışan bir şey, kullanıcı adını nereye gireceğim? Bu sadece "varsayılan" dır, ancak node_redis dokümantasyonu, kimlik doğrulama sırasında bir kullanıcı adı vermenin bir yolunu sağlamaz.

Hata: AbortError: Redis connection lost and command aborted. It might have been processed.

İşte hafif anonimleştirilmiş yeniden görüş bağlantı ekranım.

Aynısını node-redis'de nasıl yaparım?

Yanıtlar

2 LeoMurillo Aug 16 2020 at 07:36

AUTHKomut, belirtilen dokümanlar :

ACL'ler kullanıldığında, yalnızca parolanın belirtildiği komutun tek bağımsız değişken formu, örtük kullanıcı adının "varsayılan" olduğunu varsayar.

Dolayısıyla, ek kullanıcıların desteklendiği Redis 6'yı kullanıyor olsanız bile, kimlik doğrulamanızın defaultçalışması gerekir.

Gördüğünüz hata, kopuk bir bağlantının sonucudur , örneğin Redis sunucusuyla bağlantınızı bir şekilde kaybettiniz. node-redisiki senaryodan biriyle (veya her ikisiyle) ilgileniyor - bağlantı zaman aşımına uğradı veya yeniden bağlanma girişimleri bir yapılandırmada belirtilen maksimum sayıyı aştı. Bağlantı bilgilerinizi ve redis sunucunuzun nasıl yapılandırıldığını iki kez kontrol ederdim.

TLS kullandığınızı görüyorum, bunu yararlı bulabilirsiniz: Düğüm Redis'i Güvenli Hale Getirme

Node-redis istemcisinin kimliğini farklı bir kullanıcıyla doğrulamak istiyorsanız, Redis 6'yı kullanırken send_command, kullanmanız gerekir, ancak önce şu anda node-redis yeni komutu desteklemediğinden, geçerli komutu kaldırmanız gerekir .AUTHAUTH <username> <password>

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