Я использую Keycloak для защиты корпоративного приложения. Я хочу получить токен, хранящийся в контексте приложения, и имя пользователя, зарегистрированное в этом приложении.
Это мой класс:
@Stateless
public class ContextoSesionEJB {
@Resource
SessionContext sessionContext;
/**
* Atributo utilizado para el registro de log de la aplicacion.
*/
private static final Logger logger = Logger.getLogger(ContextoSesionEJB.class.getName());
/**
* Método que valida que un usuario corresponda
* al que esta logueado en el aplicativo
*
* @param nombreUsuario
* @return boolean
* */
public boolean validarUsuario(String nombreUsuario){
logger.info("Inicia metodo validarUsuario");
KeycloakPrincipal keycloakPrincipal = (KeycloakPrincipal) sessionContext.getCallerPrincipal();
if(keycloakPrincipal.getName().equals(nombreUsuario)){
return true;
}else{
logger.info("El usuario no corresponde al usuario logueado");
return false;
}
}
/**
* Método encargado de obtener el token de
* keycloak
*
* @param
* @return Token
* */
public AccessToken getToken(){
logger.info("Inicia metodo obtenerToken");
//Se accede al contexto del keycloak
KeycloakPrincipal<KeycloakSecurityContext> keycloakPrincipal = (KeycloakPrincipal<KeycloakSecurityContext>)sessionContext.getCallerPrincipal();
IDToken idToken = keycloakPrincipal.getKeycloakSecurityContext().getIdToken();
//Se obtiene y se devuelve el token
return keycloakPrincipal.getKeycloakSecurityContext().getToken();
}
}
У меня есть SessionContext
, где я собираю информацию в приложении, я искал примеры и нашел много, но когда я вызываю, например, метод «validarUsuario», и я создаю новый экземпляр из KeycloakPrincipal
Я получаю исключение
SimplePrincipal не может быть приведен к KeycloakPrincipal
Я не знаю, как я могу выполнить приведение к KeycloakPrincipal к методу SimplePrincipal в SessionContext