SPNEGO/Kerberos 経由で SSO を使用して Tomcat で Java Web アプリケーションを実行しています。ケルベロス チケットをデータベース (私の場合は 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 など) を使用しますが、上記のコードと接続プールを組み合わせる方法の例が見つかりません。例はありますか?