Единая точка входа через несколько [закрытых] доменов

Позорное java.sql.SQLException: не найдено подходящего драйвера

blockquote>

Это исключение может иметь в основном две причины:

1. Драйвер JDBC не загружен

Вам необходимо убедиться, что драйвер JDBC помещен в собственную папку /lib сервера.

[/g15]

Или, если на самом деле вы не используете источник данных пула соединений, управляемый сервером, а вручную запускаете DriverManager#getConnection() в WAR , тогда вам нужно поместить драйвер JDBC в WAR /WEB-INF/lib и выполнить ..

Class.forName("com.example.jdbc.Driver");

.. в вашем коде перед первый DriverManager#getConnection() вызов, посредством которого вы делаете убедитесь, что вы не проглатываете / игнорируете любые ClassNotFoundException, которые могут быть выброшены им, и продолжайте поток кода, как будто ничего исключительного не произошло. См. Также Где я должен разместить драйвер JDBC для пула соединений Tomcat?

2. Или URL-адрес JDBC находится в неправильном синтаксисе

Вам нужно убедиться, что URL JDBC соответствует документации драйвера JDBC и помните, что он обычно чувствителен к регистру. Когда URL-адрес JDBC не возвращает true для Driver#acceptsURL() для любого из загруженных драйверов, тогда вы также получите именно это исключение.

В случае PostgreSQL это документально здесь .

С JDBC база данных представлена ​​URL-адресом (Uniform Resource Locator). С PostgreSQL ™ это принимает одну из следующих форм:

  • jdbc:postgresql:database
  • jdbc:postgresql://host/database
  • jdbc:postgresql://host:port/database
blockquote>

В случае с MySQL это здесь .

Общий формат URL-адреса JDBC для подключения к серверу MySQL следующим образом: элементы в квадратных скобках ([ ]) являются необязательными:

jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] » [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]

blockquote>

В случае Oracle это документировано здесь .

Существует 2 синтаксиса URL, старый синтаксис, который будет работать только с SID и новый с именем службы Oracle.

Старый синтаксис jdbc:oracle:thin:@[HOST][:PORT]:SID

Новый синтаксис jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE

blockquote>

См. также:

106
задан Bob Aman 20 September 2009 в 19:43
поделиться

4 ответа

Решение SSO, что я реализовал здесь работы следующим образом:

  1. существует главный домен, login.mydomain.com со сценарием master_login.php, который справляется с логинами.
  2. Каждый клиентский домен имеет сценарий client_login.php
  3. , Все домены имеют общую базу данных сеанса пользователя.
  4. , Когда клиентский домен требует, чтобы пользователь был зарегистрирован, он перенаправляет к главному домену (login.mydomain.com/master_login.php). Если пользователь не регистрировался ведущему устройству, это запрашивает аутентификацию от пользователя (т.е. страница входа в систему дисплея). После того, как пользователь аутентифицируется, это создает сессию в базе данных. Если пользователь уже аутентифицируется, это ищет их идентификатор сессии в базе данных.
  5. главный домен возвращается к клиентскому домену (client.mydomain.com/client_login.php), передающий идентификатор сессии.
  6. клиентский домен создает cookie, хранящий идентификатор сессии от ведущего устройства. Клиент может узнать зарегистрированного пользователя путем запросов общей базы данных с помощью идентификатора сессии.

Примечания:

  • идентификатор сессии является уникальным глобальным идентификатором, сгенерированным с алгоритмом от RFC 4122
  • , который master_login.php только перенаправит к доменам в его белом списке
  • , ведущее устройство и клиенты могут быть в различных высокоуровневых доменах. Например, client1.abc.com, client2.xyz.com, login.mydomain.com
87
ответ дан grom 24 November 2019 в 03:52
поделиться

Не перестраивайте колесо. Существует много междоменных пакетов SSO с открытым исходным кодом, таких как JOSSO, OpenSSO, CAS, Шибболет и другие. При использовании Microsoft Technology повсюду (IIS, AD), можно использовать федерацию Microsoft (ADFS) вместо этого.

33
ответ дан Markc 24 November 2019 в 03:52
поделиться

Насколько отличающийся имена хоста?

Эти хосты могут совместно использовать cookie:

  • mail.xyz.com
  • www.xyz.com
  • logon.xyz.com

, Но они не могут:

  • abc.com
  • xyz.com
  • www.tre.com

В бывшем случае можно строчить основанное на cookie решение. Думайте GUID и таблица сессии базы данных.

14
ответ дан my code smells 24 November 2019 в 03:52
поделиться

При использовании Active Directory, у Вас мог бы быть каждый AD использования приложения для аутентификации, вход в систему мог бы тогда быть бесшовным.

Иначе, если приложения могут говорить друг с другом негласно, Вы могли бы использовать sessionids и иметь одно приложение, обрабатывающее идентификационное поколение, вручающее все Ваши другие приложения.

2
ответ дан Mike 24 November 2019 в 03:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: