Liferay 6.2 с адаптером Keycloak Tomcat - PullRequest
0 голосов
/ 20 сентября 2019

Я установил адаптер Tomcat Keycloak 6.0.1 на наш Liferay 6.2 CE.Когда я обращаюсь к защищенному ресурсу, как указано в web.xml, он отображает логин пользователя keycloak, что правильно.Проблема заключается в том, как после входа в систему узнать, как получить имя пользователя, токен и т. Д.?Пожалуйста, сообщите. Спасибо.

web.xml
<security-constraint>
        <web-resource-collection>
            <web-resource-name>Private</web-resource-name>
            <url-pattern>/c/portal/protected</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>user</role-name>
        </auth-constraint>
</security-constraint>

<login-config>
        <auth-method>KEYCLOAK</auth-method>
        <realm-name>this is ignored currently</realm-name>
</login-config>
<security-role>
                                <role-name>user</role-name>
</security-role>


keycloak.json in war file
{
  "realm": "SpringBootKeycloak",
  "auth-server-url": "http://localhost:8180/auth",
  "ssl-required": "external",
  "resource": "login-app",
  "credentials": {
    "secret": "a0aa7ff2-ed7d-4096-b212-9782d8eaf86f"
  },
  "confidential-port": 0
}

Code:
Error : java.lang.ClassCastException: org.keycloak.KeycloakPrincipal cannot be cast to org.keycloak.KeycloakPrincipal
    at com.ncs.sal.lawnet.portal.servlet.filter.LawnetSSOFilter.processFilter(LawnetSSOFilter.java:25)
    at com.ncs.sal.lawnet.portal.servlet.filter.LawnetBaseFilter.doFilter(LawnetBaseFilter.java:34)


public class LawnetSSOFilter extends LawnetBaseFilter{

    private static Log logger = LogFactoryUtil.getLog(LawnetSSOFilter.class);

    @Override
    protected void processFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
            throws IOException, ServletException {

        logger.info("-- Start Key Cloack integration");
        KeycloakPrincipal keycloakPrincipal = (KeycloakPrincipal)request.getUserPrincipal();
        AccessToken token = keycloakPrincipal.getKeycloakSecurityContext().getToken();
        logger.info("tokenid :" + token.getId() + "given name:" + token.getGivenName() + "Email : " + token.getEmail());
        logger.info("-- End Key Cloack integration");

    }


}

...