Игнорировать LtpaToken в WebSphere Liberty

В моей организации уже есть некоторые веб-приложения, развернутые на сервере liberty, использующие его систему единого входа, которая устанавливает файл cookie LtpaToken для всего домена интрасети.

Теперь мы переходим на веб-приложения с аутентификацией openidconnect, защищенные без сеанса (с JWT).

Аутентификация работает нормально - задействован только браузер - и авторизация также работает нормально (с функцией mpJwt-1.1).

Но когда пользователь переходит из другого веб-приложения (в рамках того же сеанса), браузер отправляет LtpaToken2 cookie, а liberty отклоняет запрос с 401 (неавторизованный).

Я бы хотел:

  1. полностью игнорировать, какой бы файл cookie LtpaToken ни пришел в запрос (да, полностью игнорировать, как будто его никогда не было, действительного или недействительного, с истекшим сроком действия или что-то еще, наши новые приложения никогда не будут заботиться о старая схема SSO);
  2. никогда не генерируйте LtpaToken после первого запроса с действующим токеном JWT.

ИЗМЕНИТЬ

Второй пункт выше на самом деле не происходит (чтобы было ясно, этот новый сервер liberty не генерирует LtpaToken).

Мне удалось создать MWE, состоящий из (на самом деле настолько минимального, что только нужен server.xml и любой index.html):

(server.xml)

<server>

  <featureManager>
    <feature>servlet-3.1</feature>
    <feature>mpJwt-1.1</feature>
  </featureManager>

  <applicationManager autoExpand="true" />

  <webApplication location="mysample.war" contextRoot="/" />

  <httpEndpoint host="*" httpPort="9080" id="defaultHttpEndpoint"/>

  <mpJwt id="server.xml-&lt;mpJwt/&gt;"
    issuer="sso-issuer"
    keyName="sso-jwk"
  />
</server>

(index.html)

any content will do

Я мог бы положительно воспроизвести 1-ю точку (отклонение с 401) с помощью простого заголовка Cookie: LtpaToken2 (да, событие не требует значения):

$ curl -v http://localhost:9080/index.html -H 'Cookie: LtpaToken2'

Это действительно возвращает index.html файл, но со статусом HTTP 401. Для html это нормально. Для файлов javascript это не так (браузер отказывается запускать скрипты).

Заголовки ответа:

HTTP/1.1 401 Unauthorized
X-Powered-By: Servlet/3.1
WWW-Authenticate: Bearer realm="MP-JWT", error="invalid_token"
Date: Wed, 01 Jul 2020 22:18:52 GMT
Content-Type: text/html
Last-Modified: Wed, 01 Jul 2020 21:51:32 GMT
Content-Length: 11
Content-Language: en-US

При запуске сервер сообщает:

...
[AUDIT   ] CWWKS4104A: LTPA keys created in 1.716 seconds. LTPA key file: .../target/liberty/wlp/usr/servers/mysample/resources/security/ltpa.keys
...
[AUDIT   ] CWWKF0012I: The server installed the following features: [appSecurity-2.0, cdi-1.2, distributedMap-1.0, jndi-1.0, jsonp-1.0, jwt-1.0, mpConfig-1.3, mpJwt-1.1, servlet-3.1, ssl-1.0].`
...

Измените заголовок запроса Cookie на что-нибудь, кроме LtpaToken2, и результат будет тот же index.html, но со статусом 200 вместо этого.


person rslemos    schedule 27.06.2020    source источник
comment
Какую функцию Liberty вы используете для openid connect sso? Если вы используете функцию openidConnectClient-1.0, добавьте disableLtpaCookie = true в ‹openidConnectClient ...›, Liberty проигнорирует LTPA cookie   -  person Chunlong    schedule 28.06.2020
comment
Я использую только функцию mpJwt-1.1 (относительно безопасности). Нет элемента <openidConnectClient...>. Просто <mpJwt...>.   -  person rslemos    schedule 28.06.2020
comment
с функцией mpJwt-1.1 я ожидаю, что сервер запросит только JWT и не вернет cookie LTPA. Можете ли вы предоставить образец server.xml?   -  person Chunlong    schedule 30.06.2020
comment
Я дважды проверю, возвращает ли он ltpa cookie, я думаю, что это не так. Моя проблема в другом: хотя он не обслуживает этот файл cookie, если какой-то файл cookie попадает в него, запрос отклоняется с 401.   -  person rslemos    schedule 30.06.2020
comment
Функция mpJwt-1.0 (если настроена) активируется перед LTPA, ожидаемый файл cookie ltpa игнорируется. Если URI не защищен ролью безопасности JEE, функция mpJwt-1.x пропускает запрос, позже в процессе обрабатываются ltpa cookie, что может вызвать некоторую путаницу.   -  person Chunlong    schedule 30.06.2020


Ответы (1)


Нашел обходной путь:

<server>
  ...
  <webAppSecurity ssoCookieName="" useOnlyCustomCookieName="true"/>
  ...
</server>
person rslemos    schedule 03.07.2020