Mensaje de error de conexión: excepción: login failed and U_STRINGPREP_PROHIBITED_ERROR
Síntomas
Se notifica un error al ejecutar el siguiente comando para conectarse a una instancia DDS:
./mongo "mongodb://rwuser:xxxxxx@192.168.0.45:8635,192.168.0.96:8635/test?authSource=admin&replicaSet=replica"
Mensaje de error:
MongoDB shell version v4.0.3 connecting to: mongodb://192.168.0.45:8635,192.168.0.96:8635/test?authSource=admin&replicaSet=replica 2021-11-05T05:52:53.717+0000 I NETWORK [js] Starting new replica set monitor for replica/192.168.0.45:8635,192.168.0.96:8635 2021-11-05T05:52:53.718+0000 I NETWORK [ReplicaSetMonitor-TaskExecutor] Successfully connected to 192.168.0.45:8635 (1 connections now open to 192.168.0.45:8635 with a 5 second timeout) 2021-11-05T05:52:53.718+0000 I NETWORK [js] Successfully connected to 192.168.0.96:8635 (1 connections now open to 192.168.0.96:8635 with a 5 second timeout) Implicit session: session { "id" : UUID("5945d2a5-8275-4e3c-b06f-632f062a2ead") } MongoDB server version: 4.0.3 2021-11-05T05:52:53.722+0000 I NETWORK [js] Marking host 192.168.0.96:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.96:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR 2021-11-05T05:52:53.722+0000 I NETWORK [js] Successfully connected to 192.168.0.45:8635 (1 connections now open to 192.168.0.45:8635 with a 0 second timeout) 2021-11-05T05:52:53.723+0000 I NETWORK [js] Marking host 192.168.0.45:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.45:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR 2021-11-05T05:52:53.724+0000 I NETWORK [js] Marking host 192.168.0.96:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.96:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR 2021-11-05T05:52:53.725+0000 I NETWORK [js] Marking host 192.168.0.45:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.45:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR 2021-11-05T05:52:53.725+0000 E QUERY [js] Error: can't authenticate against replica set node 192.168.0.45:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR : DB.prototype._authOrThrow@src/mongo/shell/db.js:1685:20 @(auth):6:1 @(auth):1:2 exception: login failed
Causa posible
La contraseña de la instancia es incorrecta.
Localización de fallas
- Compruebe si la contraseña de la instancia DDS contiene el signo de at (@), el signo de porcentaje (%) y el signo de exclamación (!). Si es así, escápate de ellos.
- Las instancias DDS admiten los siguientes caracteres especiales que requieren escapar de ~!@#$ %^ *-_=+?. %@
Solución
Método 1: Cambie la contraseña de la instancia DDS. La nueva contraseña no puede contener el signo at (@), el signo de porcentaje (%) y el signo de exclamación (!).
Método 2: Al conectarse a una instancia DDS, escape el signo at (@), el signo de porcentaje (%) y el signo de exclamación (!) y reemplácelos con códigos URL hexadecimales (códigos ASCII) %40, %25 y %21.
Por ejemplo, si la contraseña es de ****@ %***!, el código URL correspondiente es de **** 40%25*** %21.
Antecedentes
El signo at (@), el signo de porcentaje (%) y el signo de exclamación (!) se procesan como caracteres especiales cuando se conecta a una instancia DDS. Si se utilizan estos caracteres, deben escaparse cuando se utiliza la dirección de conexión de alta disponibilidad para conectarse a la instancia DDS; de lo contrario, la contraseña no se puede analizar.