Я установил адаптер 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");
}
}