sql >> Base de Datos >  >> RDS >> Oracle

Autenticación con claves públicas y cx_Oracle usando Python

Una posible solución es implementar Oracle Wallet. Crear una entrada de Oracle Wallet implica tener:

  • un nombre de resolución tnsname establecido para dicha instancia
  • un nombre de usuario y contraseña

Ejemplo:el sid de Oracle con el que estoy trabajando se llama ORCL, el usuario con el que tengo que conectarme se llama my_user. En su archivo tnsnames.ora ya tiene una entrada que resuelve el nombre/sid del servicio ORCL, cree uno más con exactamente los mismos parámetros:

#initial local name entry:
ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = my_ip)(PORT = 1528))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))

#create an additional local name entry:
ORCL_MY_USER = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = my_ip)(PORT = 1528))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))

Después de que la nueva entrada se resuelva correctamente, cree la entrada de Oracle Wallet para el nombre local ORCL_MY_USER. Este nuevo nombre local lo usará en su secuencia de comandos de python para conectarse sin proporcionar o codificar una contraseña.

Ejemplo: