2013-09-27 28 views
0

我已經編寫了Java應用程序,通過在環境變量中設置數據庫的用戶名和密碼連接到數據庫。因此,數據庫用戶名和密碼將作爲明文存儲在服務器上的文件中。用戶在Unix上以用戶身份登錄後,繞過數據庫的密碼認證?

這裏是一個創建連接字符串代碼:

if (dataBase.equals("oracle")) 
{ 
    url = "jdbc:oracle:thin:@"; 
    url = url + getParameter("Database IP", "setup.ini");   // ip 
    url = url + ":" + getParameter("Database Port", "setup.ini"); //port 
    String envVarValue = System.getenv("DBNAME"); 

    // Environment variable has value DBNAME = 

    String a[] = envVarValue.split("@"); 
    url = url + ":" + getParameter("SID", "setup.ini"); 
    String b[] = a[0].split("/"); 
    userName = b[0]; //User name 
    password = b[1]; //Password 
} 

現在,我想我的應用程序能夠通過,而無需誰就會在服務器上運行該應用程序的Unix用戶連接到數據庫在代碼中獲取數據庫用戶的密碼。

請告訴我,如果這是可能的,如果是的話?

+0

該應用程序以什麼系統用戶身份運行? – chrylis

+0

查看[OS身份驗證](http://docs.oracle.com/cd/E25054_01/network.1111/e16543/authentication.htm#i1007520) – Yann39

回答

2

請參閱如何在Oracle配置OS身份驗證的用戶帳戶,此鏈接:http://docs.oracle.com/cd/B28359_01/java.111/b31224/clntsec.htm#CIHCBCBC

你可以通過調用System.getProperty("user.name")閱讀運行Java程序的當前操作系統用戶。當通過JDBC創建連接時,您可能需要將此值附加到您創建的前綴OS_AUTHENT_PREFIX上,如上面的鏈接所示。

+0

我可以在Oracle 10g中使用JDBC瘦驅動程序進行OS身份驗證嗎? –

+0

我檢查了您發佈的鏈接。有人在那裏提到要對** t_init1.ora **文件進行一些更改。我搜索了我的服務器上沒有找到這樣的文件。這個文件是什麼,以及如何進行該鏈接中提到的更改? –

+0

我能夠在1.6版本的Java應用程序上使用上述解決方案實現操作系統認證。我想知道我們是否可以在1.4版本中實現相同的功能? 我不得不使用ojdbc5.jar而不是classes12.jar來實現這一點。但是我在某處讀到classes12.jar不支持OS認證。你能否確認一下,如果真的可以給我一個替代方案嗎? –

相關問題