Добавление функциональности для NT Аутентификации java приложений и tomcat с базой данных Oracle 10?g.
Шаги:
1. Настроить Oracle так, чтобы он понимал Os Autentification.
Для этого:
1.0. Будут активно использованы следующие параметры:
REMOTE_OS_AUTHENT,os_authent_prefix.
Они достаются запросом: show parameter os_authent;(пользователь SYSTEM)
1.1. Установим значение флага в базе : REMOTE_OS_AUTHENT=TRUE;
Полезная ссылка:
http://all-oracle.ru/content/view/?part=1&id=99 1.2. Создаём пользователя, используя? код:
CREATE USER "OPS$DOMAIN\USER" IDENTIFIED EXTERNALLY;
Надо заменить домен (DOMAIN) и пользователя (USER) на данные того, из-под кого запускается приложение. Внимание, всё вводить в верхнем регистре.
Полезная ссылка:
http://www.oracle-base.com/articles/misc/OsAuthentication.php 1.3. Теперь должно работать, для проверки можно выполнить(локально): sqlplus /@SID.
Должно зайти, не спрашивая пароля и имени пользователя.
2. Установить InstantClient и добавить его в PATH и java.library.path.
Ссылка для скачивания:
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html3. Tomcat: Изменить запись в server.xml c такой:
< resource auth="Container" driverclassname="oracle.jdbc.OracleDriver" name="jdbc/DB" password="password" type="javax.sql.DataSource" url="jdbc:oracle:thin:@host:1521:SID" username="username" maxidle="0"></resource>
на
< resource auth="Container" driverclassname="oracle.jdbc.OracleDriver" name="jdbc/AMTDB" type="javax.sql.DataSource" url="jdbc:oracle:oci:@host:1521:SID" maxidle="0"></resource>
т.е. удалить имя пользователя и пароль, заменив в URL thin на oci.
Java:
String url = "jdbc:oracle:oci:/@172.30.38.182:1521:amt"; Driver driver = new oracle.jdbc.OracleDriver(); DriverManager.registerDriver(driver); Properties props = new Properties(); Connection conn = DriverManager.getConnection( url, props);4. Profit!