Аутентификация Websphere Liberty с iv-пользователем из F5

Фактическая ситуация:

У меня есть сервер Liberty, на котором запущено мое приложение JEE. Если вы входите в приложение, Liberty запускает форму входа, где вы можете ввести свой идентификатор пользователя и пароль, которые будут проверены Ldap-Registry, и в конечном итоге вы пройдете аутентификацию и сможете создать сеанс с вашими учетными данными. Теперь вы можете видеть приложение, и приложение может использовать SessionContext и знает, кто вы...

Поскольку моя компания изменила свою философию безопасности, мы должны использовать F5 APM. На данный момент: при входе в Приложение вы будете перенаправлены на F5 APM, который перенаправит вас на IDP, где вы сможете войти. После этого он перенаправляется обратно в приложение с IV-пользователем в Http-Header. Хорошие новости в том, что я все еще могу использовать Lioberty Formlogin отсюда, но это довольно глупо, потому что вам нужно войти в систему дважды...

Теперь мой вопрос: как я могу использовать этого IV-пользователя для создания UserSession со свободой или, может быть, для проверки LdapRegistry?


person CR92    schedule 15.07.2020    source источник
comment
Если вы меняете философию на общекорпоративную аутентификацию, логичнее было бы использовать какой-нибудь проверенный стандарт вроде OIDC, SamlWebSSO, OAuth, для которых у Liberty уже есть доступные функции, а не что-то проприетарное. Если вам нужно использовать проприетарный способ, то, вероятно, проще всего будет создать собственный TAI (ibm.com/support/knowledgecenter/SSEQTP_liberty/), который будет читать IV-User из заголовка и входить в систему пользователя без входа в форму.   -  person Gas    schedule 15.07.2020
comment
@Gas, спасибо, это полезно. Я создал собственный TAI, который возвращает участника с iv-пользователем из заголовка. Каким-то образом для этого все еще нужен Ldap-реестр. Если я удалю реестр, снова появится форма-логин. Также этот перехватчик TAI вызывается каждый раз, когда есть запрос, который также необходимо исправить.   -  person CR92    schedule 16.07.2020


Ответы (1)


Если вы не хотите запрашивать реестр, вам нужно создать полную тему. Итак, вместо этого:

return TAIResult.create(HttpServletResponse.SC_OK, userid);

вам нужно сделать это в вашем TAI:

// stash in hashtable
Hashtable hashtable = new Hashtable();
hashtable.put(AttributeNameConstants.WSCREDENTIAL_UNIQUEID,uniqueid);
hashtable.put(AttributeNameConstants.WSCREDENTIAL_SECURITYNAME,userid);
hashtable.put(AttributeNameConstants.WSCREDENTIAL_GROUPS, groupList); 
hashtable.put(AttributeNameConstants.WSCREDENTIAL_CACHE_KEY, "myCustomAttribute" + uniqueid);    
Subject subject = new Subject();
subject. getPublicCredentials().add(hashtable);
return TAIResult.create(HTTPServletResponse.SC_OK, "userid", subject);

Для получения дополнительной информации посетите эти страницы:

Успешная аутентификация должна создать файл cookie LTPA и не требовать дополнительных аутентификаций, поэтому, если вы не видите такого поведения, что-то все еще неправильно настроено.

Я очень быстро взглянул на F5 APM, и похоже, что он поддерживает OIDC, так что вы должны, по крайней мере, также рассмотреть этот вариант.

person Gas    schedule 16.07.2020
comment
Использование аутентификации ODC с Liberty — можем ли мы по-прежнему ожидать куки LTPA? stackoverflow.com/questions/68610805/ - person Jatin; 04.08.2021