Я пытаюсь бороться с SSO в версии weblogic 12.2.1.3. Мы интегрировали его с OAM/OID в более крупное приложение, включающее Oracle Forms & Reports. В дополнение к Forms у нас есть различные пользовательские приложения на основе сервлетов, которые нужно вызывать из Forms.
Это хорошо.
Поскольку аутентификация происходит в мире Oracle через экран входа в систему OAM, до сих пор мне не приходилось возиться с управлением доступом в моем пользовательском коде Java, кроме получения имени пользователя из заголовков HTTP.
Плохо то, что иногда нам нужно, чтобы наши сервлеты выступали в качестве посредников между формами и отчетами. Например. Мне нужно вызвать различные вещи с отчетами (на сервере), преобразовать их и отправить обратно клиенту. Я знаю, что это звучит неправильно с точки зрения дизайна. Но все же это устаревший код, и нам нужно заставить его работать — по крайней мере, нужно попробовать.
Раньше мы использовали передачу файлов cookie между запросами. Но в 11/12g OAM я собираю информацию с здесь, что файл cookie, необходимый для успешной проверки сеанса (OAMAuthnCookie), удаляется из запроса до достижения моего сервлета. Кажется, это действительно происходит, основываясь на дампах заголовков, которые я делаю, и отслеживая вызовы с помощью инструментов разработчика F12 в браузере.
Итак.. Я понял, что мне нужно сгенерировать новый OAMAuthnCookie или что-то, что создаст его и прикрепит к новому http-вызову.. Я просто хотел бы, чтобы эксперт или кто-то, кто имел дело с этим, чтобы проверить, что следующее предположение правильно - единственный способ сделать это - использовать OAM SDK (немного неинтуитивно имхо).
Другое дело — многие примеры OAM SDK, которые я нахожу, относятся к формам входа. Мне не нужно выполнять аутентификацию пользователя, а также мне не нужно лично разговаривать с OAM, чтобы проверить, защищен ли ресурс или нет. Я имею дело с уже аутентифицированным запросом - нужно просто каким-то образом получить UserSession и токен пользователя из HttpServletRequest, чтобы сгенерировать новый OAMAuthnCookie, чтобы мой следующий запрос (например, с использованием клиента apache) был успешным. Раньше я предполагал, что это не будет будет трудно сделать, но я немного в тупике сейчас.
Спасибо за внимание.