Проверка подлинности DB2 JDBC Windows

#jdbc #db2 #windows-authentication #integrated-security

#jdbc #db2 #windows-проверка подлинности #интегрированная-безопасность

Вопрос:

Ищу пример использования JDBC в базе данных DB2 с использованием проверки подлинности Windows, предпочтительно с db2jcc4.jar водитель. Кажется, это достаточно распространенный сценарий, но мне трудно найти пример.

Комментарии:

1. Неясный вопрос. Ваш Db2-сервер также работает в MS-Windows? Или ваш Db2-сервер работает в Linux, но настроен на использование аутентификации через Active Directory? Образцы IBM jdbc для Db2 находятся в трех местах, поэтому посмотрите внимательнее, они находятся в (1) каталоге Db2 server SAMPLES/ jdbc, (2) в сетевой документации Db2-Knowledge-Centre и (3) на Github.

2. Для пояснения, сервер DB2 работает под управлением Windows. Я видел образцы JDBC. Большинство из них, похоже, используют один и тот же класс утилиты для подключения: ibm.com/support/knowledgecenter/SSEPGG_11.1.0 /. … Итак, несколько вопросов: 1. Какой конкретный драйвер мне нужно использовать, если я хочу выполнить аутентификацию Windows (т.Е. аутентифицироваться с использованием учетной записи, под которой работает мой клиент, а не явно передавать имя пользователя / пароль), 2. Требуется ли DLL в дополнение к самому драйверу? 3. Как выглядят URL-адрес и свойства для установления этого соединения?

3. Представьте, что я задал тот же вопрос, но о MS-SQL вместо DB2, был бы длинный список ответов. Так что на самом деле я ищу эквивалентный ответ DB2.

Ответ №1:

Ваш первоначальный вопрос был слишком расплывчатым, пока вы не прояснили его комментарием, спрашивающим, как подключиться к локальным базам данных Db2 через jdbc без идентификатора пользователя / пароля. Итак, ваш реальный вопрос, похоже, звучит так: «Как мне добиться аутентификации без пароля для локальных баз данных Db2 в MS-Windows?», Что может быть часто задаваемым вопросом.

Db2-server делегирует проверку подлинности базовым службам операционной системы, на которых запущен Db2-server. Имейте в виду, что Db2-server работает на нескольких совершенно разных операционных системах, только одна из которых — MS-Windows.

Да, вы можете подключиться через -JDBC к локальной базе данных Db2 в MS-Windows без указания идентификатора пользователя / пароля, используя поставляемый IBM драйвер jdbc.

Вы также можете подключиться к локальной базе данных Db2 в MS-Windows через CLI / ODBC и командную строку без указания идентификатора пользователя / пароля. Если идентификатор пользователя / пароль не указаны, то идентификатор аутентификации соответствует текущему сеансу (либо идентификатору входа в систему, либо runas идентификатору).

Если у вас есть локальный Db2-сервер с локальной базой данных, работающий в MS-Windows, то все необходимое программное обеспечение уже установлено (если используется по умолчанию) для достижения вышеуказанного.

Важно понимать, что если Db2-database удалена от клиента, то для проверки подлинности потребуется некоторая форма учетных данных. Такие учетные данные могут быть в форме сертификата (если Db2-database работает на Z / OS), или в форме идентификатора пользователя / пароля, или в форме билета kerberos, или в форме токена, используемого для облачной Db2 и т.д.

Для локального подключения jdbc без пароля к Db2-database можно использовать формат URL «jdbc: db2:your_database_name» .

Класс com.ibm.db2.jcc.DB2Driver (как указано в поддерживаемых в настоящее время версиях db2jcc4.jar ) поддерживает соединения без пароля с этим шаблоном URL.

Пример с локальной базой данных-имя = образец.

 try
{ 
    Connection con = DriverManager.getConnection("jdbc:db2:sample");
    ...
}
catch (Exception e)
{
   ...
}
  

Центр знаний Db2 предоставляет здесь все подробные сведения о доступных свойствах jdbc

https://www.ibm.com/support/knowledgecenter/SSEPGG_11.5.0/com.ibm.db2.luw.apdv.java.doc/src/tpc/imjcc_r0052038.html

На других страницах показаны дополнительные свойства, специфичные для источников данных Z / OS, или облачных баз данных, или источников данных серии i, или источников informix и т.д.

Комментарии:

1. Уточнение: база данных DB2 не является локальной. Мое Java-приложение работает на компьютере M; DB2 работает на компьютере N. Оба являются серверами Windows. В моем Java-коде я не буду указывать имя пользователя / пароль при подключении к БД. Скорее, я ожидаю, что я буду проходить аутентификацию в базе данных DB2, используя учетную запись, под которой запущено мое приложение. Является db2jcc4.jar все, что мне для этого нужно? Нужно ли мне при настройке соединения указывать свойство типа integratedSecurity=true (как я бы сделал с MS-SQL).