Я пытаюсь бороться с 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) был успешным. Я привык предполагать, что это не будет быть трудно сделать, но сейчас я немного озадачен.
Спасибо за внимание.