Я думаю, что у меня есть общее представление о AuthenticationProviders
WebLogic, но я не могу понять, как передать учетные данные пользователя поставщику.
Мое понимание
Читая JAAS, я думаю, что у меня есть представление о том, как использовать LoginContext
для входа в систему. LoginContext
выбирает параметры LoginModule
и JAAS из файла конфигурации JAAS. Определив экземпляр некоторого CallbackHandler
, вы можете передать учетные данные пользователя. После вызова LoginContext.login()
вход в систему осуществляется с использованием ассоциированного LoginModule
.
После ознакомления с документацией Oracle по AuthorizationProviders
, большая часть кажется довольно простой. AuthenticationProvider
использует JAAS для входа в систему. Кажется, что AuthenticationProvider
управляет LoginContext
внутренне.
Мне трудно понять, как WebLogic управляет LoginContext
и CallbackHandler
, которые в итоге передаются методу LoginModule.initialize
.
Ситуация
Приложение:
- Веб-приложение Java, работающее в WebLogic 11g (10.3.6).
- Попытка аутентификации с использованием имени пользователя и пароля, без формы входа.
В настоящее время приложение использует форму входа в систему и отправляет с действием "j_security_check". Есть пользовательские AuthenticationProvider
и LoginModule
, которые обрабатывают логин и обрабатывают имя пользователя и пароль, представленные в форме.
Я предполагаю, что WebLogic может внутренне обработать действие j_security_check и знает, как сопоставить поля ввода формы с CallbackHandler
, который передается в пользовательский LoginModule
.
Моя цель
Я пытаюсь создать второй процесс входа в систему, который включает в себя извлечение учетных данных (имя пользователя / пароль) из заголовков HTTP-запроса. Учетные данные в настоящее время извлекаются с помощью фильтра сервлетов. Так или иначе, я хотел бы передать эти учетные данные в LoginModule
, который уже существует для формы входа.
Я хотел бы сделать одно из следующего:
- Возьмите учетные данные прямо из заголовков и передайте их
AuthenticationProvider
(через некоторую пользовательскую реализацию и / или конфигурацию AuthenticationProvider
- Извлеките учетные данные заголовка с помощью фильтра сервлетов и вручную передайте их
AuthenticationProvider
.
Мой вопрос
Что я могу сделать, чтобы передать учетные данные заголовка в LoginModule
?
- Существует ли предопределенный
AuthenticationProvider
, который может извлечь имя пользователя и пароль из заголовка? Можете ли вы описать поток от запроса до входа в систему?
- Есть ли какой-нибудь способ получить доступ к
CallbackHandler
или LoginContext
, используемому AuthenticationProvider
? Таким образом, я могу передать учетные данные самому AuthenticationProvider
.
- Как WebLogic знает, где получить учетные данные пользователя и как связать их с определенным
AuthenticationProvider
?
Вполне возможно, что по пути я пропускаю некоторые ключевые концепции, поэтому не стесняйтесь ставить меня на правильный путь со всем, что я упомянул.
Спасибо!