JDBC через BPXBATCH — как получить учетные данные пользователя TSO?

У меня есть небольшая Java-программа, которая читает таблицу db2 через jdbc. Эта программа вызывается через "tso bpxbatch myjavatool".

Интересно, есть ли возможность «передать» имя пользователя/пароль моего пользователя TSO драйверу JDBC?

Например, если я подключаюсь к DB2 с помощью простого сценария REXX, мне не нужно снова указывать свое имя пользователя/пароль, и DB2/RACF проверяет, разрешено ли моему пользователю выполнять SQL.

Теперь мой java-инструмент работает не в моем адресном пространстве TSO, а под управлением J9 в адресном пространстве USS...

Есть ли способ автоматически войти в DB2 под текущим пользователем TSO?


person Klaus Schulz    schedule 16.10.2014    source источник


Ответы (1)


Я не слишком много знаю о BPXBATCH, но я предполагаю, что вы все еще работаете под своим собственным идентификатором пользователя в адресном пространстве USS.

В вашем 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);

тогда просто передайте пропуск вместо пароля, и все будет в порядке.

Увы, есть несколько аспектов, в которых вы должны убедиться, прежде чем использовать этот подход:

  • Настройте RACF для использования Passtickets для DB2 — возможно, он уже настроен, иначе вам придется настроить правильные профили в классе PTKTDATA (дополнительную информацию см. в документации по RACF)
  • Убедитесь, что каждый пользователь, запускающий код, имеет надлежащую авторизацию RACF для использования вызываемой службы r_ticketserv (опять же, см. документацию RACF).
  • Найдите правильное имя приложения (applid) для вашей системы DB2. См. документацию по DB2 об использовании пропусков.
person piet.t    schedule 17.10.2014
comment
IRRPassTicket — очень хорошая идея, я никогда раньше не слышал об этой функции. Хороший. На данный момент я изо всех сил пытаюсь узнать идентификатор приложения DB2, но я уверен, что есть способ извлечь его откуда-нибудь... - person Klaus Schulz; 17.10.2014