Я разработал модуль аутентификации безопасности (SAM) и реализовал метод validateRequest
. У меня также есть простой webapp, настроенный для использования этого SAM.Как сохранить аутентифицированного пользователя в JASPIC?
В моем validateRequest
метод, я проверить clientSubject и установить CallerPrincipalCallback
с закодированного имени пользователя и GroupPrincipalCallback
с закодированного названием группы:
final CallerPrincipalCallback callerPrincipalCallback = new CallerPrincipalCallback(clientSubject, "anonymous");
final GroupPrincipalCallback groupPrincipalCallback = new GroupPrincipalCallback(clientSubject, new String[] {"user"});
try {
this.handler.handle(new Callback[] {callerPrincipalCallback, groupPrincipalCallback});
} catch (IOException | UnsupportedCallbackException e) {
logger.error(e.getMessage());
}
Я заметил, что каждый раз, когда я обновить сервлет в моем веб-приложение, то при условии клиента просто пустое, logger.debug("Client: {}", clientSubject);
:
2015-05-05 11:21:02,200 DEBUG n.m.j.s.Saml2AuthModule [http-listener-1(2)] Client: Subject:
можно ли «сохранить» тему как-то так, что субъект присоединяется к сессии, и я могу просто пропустить регистрацию в s- ame пользователь каждый раз?
EDIT Я думаю, я нашел способ вручную хранить его в HttpSession
: req.getSession().setAttribute("subject", user);
Не очень, но это работает.
Спасибо, Аржан, я знаю, что вы очень хорошо разбираетесь в этом вопросе (нашли много сообщений в блоге от вас) и искали способ связаться. Я рад, что ты меня нашел. :) – Davio
@Davio приветствую вас, надеюсь, что ответ будет полезен;) –
Очень полезно, я рад, что я не единственный, кто думает, что это упущение в текущих спецификациях, я отдам свой голос. – Davio