Кажется, что пользователю не назначена роль после аутентификации SAML

Я пытаюсь настроить аутентификацию SAML на Apache Tomcat 9.0.24. Я использую плагин keycloak-saml-tomcat-adapter-dist-7.0.0, который должен аутентифицироваться на автономном сервере KeyCloak (v 7.0.0).

Я настроил обычные сопоставления ролей в web.xml, например:

<security-role>
    <role-name>role0</role-name>
</security-role>
<security-constraint>
   <display-name>Security constraint for the /ktc folder</display-name>
    <web-resource-collection>
        <web-resource-name>/ktc page</web-resource-name>
        <url-pattern>/ktc</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>role0</role-name>
    </auth-constraint>
</security-constraint>

Машины докеров находят друг друга, и когда я пытаюсь получить доступ к защищенному ресурсу /ktc, попытка перехватывается, и я перенаправляюсь на сервер keycloak для входа. Если я предоставлю неверные учетные данные, попытка входа будет корректно отклонена. Кроме того, если я предоставлю действительные учетные данные, меня перенаправят обратно на мой веб-сайт Tomcat.

Вот, к сожалению, Tomcat не пропускает меня на защищенный ресурс. Если я попытаюсь получить к нему доступ снова, во второй раз меня перенаправят обратно после того, как что-то быстро вспыхнет на экране, не представив мне форму входа. Из этого я подозреваю, что я действительно аутентифицирован, но не получаю ожидаемую роль. Журналы событий сервера keycloak также показывают, что я вошел в систему, но не сообщают, насколько успешно и какие роли были назначены.

Что я делаю неправильно?


person Audrius Meskauskas    schedule 09.09.2019    source источник
comment
Мне удалось найти, в чем проблема, и сообщество должно решить, оставить это или нет.   -  person Audrius Meskauskas    schedule 11.09.2019


Ответы (1)


Конечная точка POST, настроенная на сервере аутентификации KeyCloak, должна заканчиваться на /saml и не указывать ни на какую конечную точку POST существующего сервлета внутри Tomcat. Только тогда клапан KeyCloak перехватит его.

person Audrius Meskauskas    schedule 11.09.2019