oracle weblogic прокси сервлетов OAM - как распространять OAMAuthnCookie - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь бороться с SSO в weblogic версии 12.2.1.3. Мы интегрировали его с OAM / OID в более крупное приложение, состоящее из Oracle Forms & Reports. В дополнение к формам у нас есть различные пользовательские приложения на основе сервлетов, которые необходимо вызывать из форм.

Это хорошо.

Поскольку аутентификация происходит в мире Oracle через экран входа в OAM, до сих пор мне не приходилось связываться с Access Management в моем пользовательском коде Java, кроме получения имени пользователя из заголовков HTTP.

Плохо то, что иногда нам нужны наши сервлеты, чтобы они выполняли роль посредника между формами и отчетами. Например. Мне нужно вызывать различные вещи с помощью отчетов (на сервере), преобразовывать их и отправлять обратно клиенту. Я знаю, что это не звучит правильно с точки зрения дизайна. Но все же это устаревший код, и нам нужно заставить его работать - по крайней мере, нужно попробовать ..

Раньше мы привыкли к этому, передавая файлы cookie между запросами. Но в 11 / 12g OAM я собираю с здесь , что cookie, необходимый для успешной проверки сеанса (OAMAuthnCookie), удаляется из запроса до того, как он достигнет моего сервлета. Похоже, это действительно происходит, основываясь на дампах заголовков, которые я делаю, и отслеживая вызовы с помощью F12 Developer Tools в браузере.

Итак ... Я понял, что мне нужно сгенерировать новый OAMAuthnCookie или что-то, что создаст его и присоединит к новому вызову http. Я просто хотел бы, чтобы эксперт или кто-то, кто имел дело с этим, подтвердил, что следующее предположение верно - единственный способ сделать это - использовать OAM SDK (немного не интуитивно понятно imho).

Другое дело - многие из примеров, которые я нахожу о OAM SDK, имеют дело с формами входа в систему. Мне не нужно выполнять аутентификацию пользователя, и при этом мне не нужно самому разговаривать с OAM, чтобы проверить, защищен ли ресурс или нет. Я имею дело с уже аутентифицированным запросом - нужно просто каким-то образом получить UserSession и токен пользователя из HttpServletRequest, чтобы сгенерировать новый OAMAuthnCookie, чтобы мой следующий запрос (с использованием, например, клиента apache) был успешным. Я привык предполагать, что это не будет быть трудно сделать, но сейчас я немного озадачен.

Спасибо за внимание.

1 Ответ

0 голосов
/ 03 мая 2019

Работа с OAM SDK, насколько я видел (на момент написания этой статьи мы использовали Weblogic 12c с Access Manager, который ведет себя точно так, как описано в документах, в которых говорится об OAM 11g - поэтому я предполагаю, что это версиямы также используем), включает в себя

  • генерацию ObAccessClient.xml из консоли OAM для установления контакта между кодом, над которым вы работаете (который будет называться Access Client), и OAM
  • включая JAR-файлы из загружаемого OAM SDK с вашим приложением
  • запись кода в вашем приложении (например, в фильтре аутентификации или сервлете) для установления связи с OAM через его SDK для окончательной аутентификации / авторизации и т. д.

Здесь есть хорошее руководство о том, как написать код в Документация Oracle здесь .

Я также нашел эти статьи очень информативными:

Код, который я имел в виду, в конечном итоге сгенерирует новый файл cookie аутентификации, который я передам сервлету отчетов для дальнейшей авторизации (поскольку этот файл cookie действительно удаляется из запроса до того, как он попадет в мое приложение)).Единственный способ, с помощью которого я сгенерировал такой файл cookie, заключается в изменении параметра в консоли OAM для включения в него другого файла cookie (OAM_IDENTITY_ASSERTION) в соответствии с другой статьей Oracle A-Team .

В процессе вышеуказанного расследования я наконец наткнулся на этот волшебный ответ на вопрос на форумах Oracle.В соответствии с этим в консоли OAM есть пользовательская настройка, которая позволяет отключить фильтрацию OAMAuthnCookie по умолчанию.

filterOAMAuthnCookie=false

В нашем случае это меня вполне устраивало.Действительно, после изменения рассматриваемый файл cookie наконец достиг моего приложения, и в результате я смог передать его последующим запросам в Oracle Reports без использования OAM SDK.

...