Jan 19, 2011

NT Аутентификации java приложений и tomcat с базой данных Oracle 10g

Добавление функциональности для 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.html
3. 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!
Post a Comment