JDBC через BPXBATCH - как получить учетные данные пользователя TSO?
У меня есть небольшая Java-программа, которая читает таблицу db2 через jdbc. Эта программа вызывается через "tso bpxbatch myjavatool".
Интересно, есть ли возможность "передать" имя пользователя / пароль моего пользователя TSO в драйвер JDBC?
Например, если я подключаюсь к DB2 с помощью простого сценария REXX, мне не нужно снова указывать свое имя пользователя / пароль, и DB2/RACF проверяет, разрешено ли моему пользователю выполнять SQL.
Теперь мой инструмент Java работает не в моем адресном пространстве TSO, а под управлением J9 в адресном пространстве USS...
Есть ли способ автоматического входа в DB2 с текущим пользователем TSO?
1 ответ
Я не знаю слишком много о BPXBATCH, но я предполагаю, что вы все еще работаете под своим собственным идентификатором пользователя в USS-address-space.
В вашем java-коде вы сможете получить свой идентификатор пользователя через
String user = System.getProperty("user.name");
Что касается пароля, вы можете попробовать вместо этого использовать RACF-Passtickets. Есть библиотека IRRRacf.jar
в /user/include/java_classes
и соответствующий Javadoc в IRRRacfDoc.jar
в том же каталоге. код для генерации Passticket довольно прост:
IRRPassTicket generator = new IRRPassTicket();
String ptkt = generator.generate(user,applid);
тогда просто передайте passticket вместо пароля, и все будет в порядке.
Увы, есть несколько аспектов, в которых вы должны убедиться, прежде чем использовать этот подход:
- Настройте RACF для использования Passtickets for DB2 - возможно, он уже настроен, в противном случае вам придется настроить надлежащие профили в классе PTKTDATA (подробнее см. Документацию RACF)
- Убедитесь, что у каждого пользователя, выполняющего код, есть соответствующая авторизация RACF для использования вызываемой службы r_ticketserv (снова см. Документацию RACF).
- Найти правильное название приложения (
applid
) для вашей DB2-системы. Смотрите DB2-документацию по использованию passtickets.