Аутентификация приложений Wildfly 11 Elytron + KeyCloak 3.4.3
Я испытываю странное поведение перенаправления при попытке войти в приложение на wildfly 11 (elytron включен), защищенный через KeyCloak 3.4.3 на отдельном компьютере (установка vanilla)
Настройка: сервер keycloak является ванильной установкой, одна область поверх главной (пользователи Wildfly Mini Apps) взяты из OpenLdap (популяция пользователей работает правильно)
сервер приложений - wildfly 11 с включенным elytron и установленным keycloak-wildfly-адаптером
приложение защищено в web.xml
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<login-config>
<auth-method>KEYCLOAK</auth-method>
<realm-name>KeycloakOIDCRealm</realm-name>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>login</web-resource-name>
<url-pattern>/login</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-role>
<role-name>*</role-name>
</security-role>
keycloak.json:
{
"realm": "Wildfly Mini Apps",
"auth-server-url": "https://keycloak-server/auth",
"ssl-required": "external",
"resource": "wildfly-server",
"credentials": {
"secret": "client-secret"
},
"confidential-port": 0,
"disable-trust-manager": true
}
Страница входа записывает текст предупреждения в консоль, чтобы я знал, что он работает, и перенаправляет на index.xhtml
Проблема: при доступе к приложению / входу в систему, я успешно перенаправлен на страницу входа в систему keycloak, и после ввода учетных данных страница входа в систему просто продолжает перенаправлять на себя, а не на index.xhtml, как предполагалось
Вывод консоли Wildfly:
Проблемная часть, кажется, это:
2018-03-06 13: 13: 59,214 TRACE [org.wildfly.security] (задание по умолчанию-50) Сопоставление разрешений: удостоверение [ 75e82805-b2ec-4e75-a8d3-fae051845f04 ] с ролями [аутентифицирован, подразумевает uma_authorization] ("org.wildfly.security.auth.permission.LoginPermission" "") = true 2018-03-06 13:13:59,222 TRACE [org.wildfly.security] (задание по умолчанию-50) Авторизация прошла успешно 2018-03-06 13:13: 59,222 TRACE [org.wildfly.security] (задание по умолчанию-50) Обработка AuthorizeCallback: authenticationID = пустой ID авторизации = пустой авторизованный = true
Подсвеченный идентификатор указывает на правильного пользователя в keycloak, сопоставление ролей в порядке, но я нигде не вижу имя пользователя этого пользователя.
Что мне не хватает в моей конфигурации, чтобы получить правильное имя пользователя? Почему authorizationID и authenticationID равны нулю, когда аутентифицированный правильно разрешен в true?
Спасибо