Oracle
 sql >> Database >  >> RDS >> Oracle

Autenticazione con chiavi pubbliche e cx_Oracle tramite Python

Una possibile soluzione è implementare Oracle Wallet. La creazione di una voce Oracle Wallet implica avere:

  • un nome di risoluzione tnsname stabilito per detta istanza
  • un nome utente e una password

Esempio:il sid Oracle con cui sto lavorando si chiama ORCL, l'utente con cui devo connettermi si chiama my_user. Nel tuo file tnsnames.ora hai già una voce che risolve il nome/sid del servizio ORCL, creane un'altra con esattamente gli stessi parametri:

#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)))

Dopo che la nuova voce è stata risolta correttamente, crea la voce del portafoglio Oracle per il nome locale ORCL_MY_USER. Questo nuovo nome locale che utilizzerai nel tuo script python per connetterti senza fornire o codificare una password al suo interno.

Esempio: