0

我已经用 Java 编写了应用程序,这些应用程序通过获取环境变量中设置的数据库的用户名和密码来连接到数据库。因此,数据库用户名和密码以明文形式存储在服务器上的文件中。

这是创建连接字符串的代码:

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 用户连接到数据库,该用户将在服务器上运行此应用程序,而无需在代码中获取数据库用户的密码。

请告诉我这是否可行,如果可以,怎么办?

4

1 回答 1

2

有关如何在 Oracle 中为操作系统身份验证配置用户帐户的信息,请参阅此链接:http: //docs.oracle.com/cd/B28359_01/java.111/b31224/clntsec.htm#CIHCBCBC

您可以通过调用读取当前操作系统用户运行您的 java 程序System.getProperty("user.name")。通过 JDBC 创建连接时,您可能必须将此值附加到OS_AUTHENT_PREFIX您创建的前缀,如上面的链接所示。

于 2013-09-27T06:46:14.043 回答