Oracle ORDS на Tomcat 8 скрывает имя схемы в URL-адресе

Я не хочу, чтобы пользователи могли видеть контекст или имя схемы в URL-адресе ORDS.

Как и в документации Oracle, мой URL-адрес выглядит примерно так:

https://server:port/ords/workspace/hr/employees/7369

обратите внимание на имя схемы, присутствует HR. Моя цель - скрыть ORDS, рабочее пространство и hr. Итак, мой URL-адрес должен быть:

https://server:port/redirect_name/employees/7369

Чего я не хочу, так это перенаправления HTTP 301, которое обновляет панель браузера.

Вещи пробовали

1) UrlRewriteFilter в ROOT, но с type = "redirect" он только перенаправляет и пропускает контекст. Без type = "redirect" выдает "Запрошенный ресурс недоступен". от Tomcat, так что, по-видимому, даже не попадает в ORDS.

2) перенаправление JSP

<% response.sendRedirect("/some/where"); %>

который успешно перенаправлен, но утечка контекста.

3) Tomcat "перезаписывает Valve" снова тот же результат - успешное перенаправление типа 301.

Не пробовали

1) Передайте Tomcat экземпляру Apache httpd.


person Andrew    schedule 08.06.2017    source источник
comment
когда вы включаете схему REST, вы можете присвоить ей псевдоним, чтобы имя пользователя db не отображалось через URI, но ожидается, что у вас будет ЧТО-ТО в URI / ords /, которое указывает, куда идти, чтобы получить определения REST для пул подключений к базе данных   -  person thatjeffsmith    schedule 05.02.2018


Ответы (1)


Ответ относится только к ORDS 3.0.9. README описывает:

  • ОШИБКА: 25072243 - Исправить регрессию, предотвращающую сопоставление URL-адресов схем с включенным ORDS, если пул шлюза PL / SQL не существует.

без которых я не верю, что это будет работать (не тестировалось). Обратите внимание, что при обновлении ORDS 3.0.6 или более ранней версии в схему БД были внесены изменения, и вам необходимо выполнить обновление.

Это не полный ответ, но это самый близкий ответ, который мне удалось получить. Сначала переименуйте файл ords.war в желаемое redirect_name.war. Это автоматически создаст новый каталог конфигурации для подключения к базе данных, но еще не будет настроен. Варианты: установить redirect_name.war, используя:

java -jar redirect_name.war install simple

или вручную отредактировав файлы конфигурации, чтобы они соответствовали уже имеющимся настройкам ORDS. Найти каталог конфигурации можно двумя способами:

java -jar redirect_name.war configdir

предоставит вам каталог конфигурации, или вы можете проверить его:

.\webapps\redirect_name\WEB-INF\web.xml

с именем параметра при условии, что Tomcat настроен на распаковку WAR-файлов, в противном случае посмотрите сам сжатый WAR-архив.

На этом этапе URL-адрес изменился с этого:

https://server:port/ords/workspace/hr/employees/7369

к этому:

https://server:port/redirect_name/workspace/hr/employees/7369

Следующим шагом является настройка URL-адреса карты, что можно сделать с помощью:

java -jar redirect_name.war mapurl --type base-path --workspace-id hr / apex

или вручную создав файл url-mapping.xml в найденном выше. Если вы создадите файл вручную, он должен выглядеть так:

<?xml version="1.0" encoding="UTF-8"?>
<pool-config xmlns="http://xmlns.oracle.com/apex/pool-config">
   <pool name="apex" base-path="/" workspace-id="hr" updated="2017-01-01T01:01:01.012Z"/>
</pool-config>

Имя пула «apex» - это имя установленной базы данных по умолчанию. Вы можете проверить, какие имена баз данных были настроены в ORDS, проверив подкаталог / conf /, где при установке по умолчанию вы найдете файл с именем apex_pu.xml, описывающий соединение с базой данных. Если вы хотите подключиться к другой базе данных (подробнее здесь), это может быть сделано с:

java -jar redirect_name.war setup --database ords_db_name

который проведет вас через серию запросов для ввода имени службы или SID. Обратите внимание, что вы должны выбрать 1, когда будет предложено здесь:

Enter 1 if you want to verify/install Oracle REST Data Services schema or 2 to skip this step [1]

или соединение с базой данных не будет создано. Чтобы убедиться в успехе, проверьте расположение / conf и найдите ords_db_name_pu.xml. Обратите внимание, что ords_db_name - это просто псевдоним имени подключения к базе данных, используемый ORDS, он не обязательно должен быть фактическим SID или именем службы.

Эти шаги приведут URL-адрес вниз с промежуточного шага:

https://server:port/redirect_name/workspace/hr/employees/7369

к этому:

https://server:port/redirect_name/workspace/employees/7369

параметр url-mapping.xml / mapurl с / удалил необходимость в любом имени. В качестве альтернативы можно было использовать эту команду:

java -jar redirect_name.war mapurl --type base-path --workspace-id hr /something_here apex

давая этот URL:

https://server:port/redirect_name/workspace/something_here/employees/7369

Не тестировалось

Переименование ords.war в ROOT.war теоретически устраняет необходимость наличия "redirect_name" в URL-адресе, но я не был готов иметь ORDS в местоположении ROOT.

person Andrew    schedule 09.06.2017