Я хотел интегрировать keycloak в качестве плагина аутентификации для платформы nuxeo, работающей на моем локальном компьютере
Подробности настройки
Версия платформы Nuxeo: 10.10 (работает на tomcat 9)
Версия Keycloak: 6.0.1
Распределение адаптера tomcat keycloak: keycloak-tomcat8-adapter-dist
Я выполнил шаги, указанные в ссылке https://github.com/nuxeo/nuxeo/tree/master/nuxeo-services/login/nuxeo-platform-login-keycloak.
Здесь я создал nuxeo-платформу-login-keycloak плагин для keycloak версии 6.0.1.
В keycloak я установил клиент авторизации во вновь созданной области 'demo'
Сведения о клиенте доступны в конфигурация клиента
Я создал роль «Члены» и добавил к ней роль администратора. Я создал пользователя «keycloakuser» и добавил его к «Членам».
Когда пользователь нажимает на nuxeo ui из браузера,Поток аутентификации работает нормально.Он перенаправляет меня на страницу входа в Keycloak, на действительные учетные данные, он перенаправляет меня на Nuxeo UI.Пользователь создан вместе с назначенной ему группой «Члены».
Сценарий ошибки
Чтобы вызвать остальные API от почтальона, я настроил Oauth2 для аутентификации.
URL-адрес аутентификации: http://localhost:8080/auth/realms/demo/protocol/openid-connect/auth
URL-адрес токена: http://localhost:8080/auth/realms/demo/protocol/openid-connect/token
Клиент: testclient
Секрет клиента: *****
Область действия: openid
Я использовал access_token, полученный с помощью потока Oauth2, чтобы сделатьВызов API как http://localhost:8190/nuxeo/api/v1/id/document_id. Сбой при
java.lang.ClassCastException: class org.apache.catalina.core.ApplicationHttpRequest cannot be cast to class org.apache.catalina.connector.RequestFacade (org.apache.catalina.core.ApplicationHttpRequest and org.apache.catalina.connector.RequestFacade are in unnamed module of loader java.net.URLClassLoader @39aeed2f)
at org.nuxeo.ecm.platform.ui.web.keycloak.DeploymentResult.invokeOn(DeploymentResult.java:79) [nuxeo-platform-login-keycloak-10.10.jar:?]
at org.nuxeo.ecm.platform.ui.web.keycloak.KeycloakAuthenticatorProvider.provide(KeycloakAuthenticatorProvider.java:56) [nuxeo-platform-login-keycloak-10.10.jar:?]
at org.nuxeo.ecm.platform.ui.web.keycloak.KeycloakAuthenticationPlugin.handleRetrieveIdentity(KeycloakAuthenticationPlugin.java:113) [nuxeo-platform-login-keycloak-10.10.jar:?]
at org.nuxeo.ecm.platform.ui.web.auth.NuxeoAuthenticationFilter.handleRetrieveIdentity(NuxeoAuthenticationFilter.java:1137) [nuxeo-platform-web-common-10.10.jar:?]
at org.nuxeo.ecm.platform.ui.web.auth.NuxeoAuthenticationFilter.doFilterInternal(NuxeoAuthenticationFilter.java:548) [nuxeo-platform-web-common-10.10.jar:?]
Наблюдение:
1. Вызов запроса API не достигает конечной точки keycloak
2. Я попытался напечатать запросвведите (фактически тип оболочки запроса) в обоих сценариях.
Для запроса браузера это было org.apache.catalina.connector.RequestFacade
, а для запроса API это было org.apache.catalina.core.ApplicationHttpRequest
, что не распространяется org.apache.catalina.connector.RequestFacade
Вопросы:
1. Отличается ли вышеуказанное поведение (упоминание в пункте 2) в версиях tomcat, ранее относящихся к tomcat 9?
2. Есть ли проблемы с совместимостью с версией tomcat и адаптерами keycloak jar-версии?