Как использовать аутентификацию Windows для SQL Server с сервера Jasper, работающего в Linux

У меня есть 64-разрядная версия Jasper Server 4.5.0, работающая в Linux.

Одним из многих источников данных, к которым подключается Jasper Server, является SQL Server без доступных параметров аутентификации Local SQL.

Как я могу подключиться к базе данных, используя учетную запись Active Directory вместо локальной учетной записи SQL?


person Nicholas DiPiazza    schedule 09.07.2012    source источник


Ответы (1)


Предположения: REMOTE_IP — это IP-адрес. SQL-сервер привязан к порту 1433 и прослушивает TCP/IP-трафик. И имя базы данных jasper.

Вместо использования обычного драйвера sqljdbc.jar для подключения к SQL Server мы будем использовать продукт под названием jTDS для подключиться к SQL серверу. Это связано с тем, что он позволяет JDBC подключаться к серверу SQL с использованием режима проверки подлинности Windows вместо режима SQL.

Шаги:

1) Установите яшмовый сервер 4.5.x

2) Получите jTDS 1.2.5 (или любую последнюю версию, которая должна работать).

Вы могли заметить, что в этом пакете jTDS есть несколько DLL. Не волнуйся! Драйвер по-прежнему работает в Linux. Вы просто не можете использовать единый вход в Linux, конечно, как это делает Windows.

Извлеките jtds-*.jar в $jasperserver/apache-tomcat/lib

3) Отредактируйте $jasperserver/apache-tomcat/conf/Catalina/localhost/jasperserver.xml и добавьте следующий элемент перед </Context>

<Resource name="jdbc/sqlserver"
             auth="Container"
             type="javax.sql.DataSource"
             driverClassName="net.sourceforge.jtds.jdbc.Driver"
             url="jdbc:jtds:sqlserver://REMOTE_HOST:1433;DatabaseName=jasper;useCursors=false;domain=COM;username=Administrator;password=XXXXXXX;user=Administrator"
             user="Administrator"
             password="XXXXXXX"
             maxActive="20"
             maxIdle="20"
             maxWait="60000"
             removeAbandoned="true"
             logAbandoned="true"         
             removeAbandonedTimeout="300"
             validationQuery="SELECT 1"/>

4) Отредактируйте $jasperserver/apache-tomcat/webapps/jasperserver/WEB-INF/web.xml и добавьте новый <resource-ref> для нового источника данных:

   <resource-ref>
     <description>Connection Description</description>
     <res-ref-name>jdbc/sqlserver</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
   </resource-ref>

5) Создайте новую базу данных с именем «jasper» и предоставьте права на чтение* учетной записи Active Directory, которую вы хотите использовать.

6) Запустите этот скрипт для проверки:

create table test (test varchar(50) NULL) 
insert into test values ('1')
insert into test values ('2')
insert into test values ('3')

7) Создайте новый файл JSP $jasperserver/apache-tomcat/webapps/jasperserver/test.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<sql:query var="rs" dataSource="jdbc/sqlserver">
  select test from test
</sql:query>

<html>
  <head>
    <title>DB Test</title>
  </head>
  <body>
    <h2>Results</h2>

    <c:forEach var="i" items="${rs.rows}">
      Text Message: <c:out value="${i.test}"/><br>
    </c:forEach>
  </body>
</html>

8) Запустите tomcat jasperserver. Войдите и протестируйте http://localhost:8080/jasperserver/test.jsp

Вы должны увидеть строки 1, 2 и 3 из тестовой таблицы.

Если это не сработает... просмотрите предыдущие шаги и посмотрите, что пошло не так.

9) Просто создайте источник данных JNDI сервера jasper, выбрав: Источники данных -> Новый источник данных -> Тип: источник данных JNDI. -> Поиск JNDI: /jdbc/sqlserver

Создайте свои таблицы и протестируйте свой отчет.

person Nicholas DiPiazza    schedule 09.07.2012
comment
Я не использую Jasper, но мне удалось пройти аутентификацию в SQL Server с помощью учетной записи AD, но мне пришлось использовать драйвер JTDS. Удивлен, что я не мог сделать это напрямую с драйвером MS SQL JDBC. - person Shilpam; 09.06.2015