1

我已经通过 SPNEGO/Kerberos 在带有 SSO 的 Tomcat 上运行 Java Web 应用程序,并且我想将 kerberos 票证传递给数据库,在我的情况下是 Oracle DB(就像 MS 产品中的模拟)。我找到了一个实现示例(http://docs.oracle.com/cd/B28359_01/java.111/b31224/clntsec.htm):

Connection conn = (Connection)Subject.doAs(specificSubject, new PrivilegedExceptionAction({
   public Object run() {
   Connection con = null;
   Properties prop = new Properties();
   prop.setProperty(AnoServices.AUTHENTICATION_PROPERTY_SERVICES,"("+AnoServices.AUTHENTICATION_KERBEROS5 + ")");
   try {
    OracleDriver driver = new OracleDriver();
    con = driver.connect(url, prop);
    }catch (Exception except){
    except.printStackTrace();
    }
    return con;
    }
    }); 
    String auth = ((OracleConnection)conn).getAuthenticationAdaptorName();
    System.out.println("Authentication adaptor="+auth);
    printUserName(conn);
    conn.close();

但是众所周知,创建新连接是一项昂贵的操作。为了解决这个问题,常用连接池(如c3p0),但我找不到例子,如何将上面的代码和连接池结合起来。有什么例子吗?

4

0 回答 0