SimplePrincipal不能转换为KeycloakPrincipal

时间:2018-05-11 20:52:35

标签: java session ejb keycloak

我使用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我在应用程序中捕获信息,我已经找了一个例子,我已经找到了很多但是当我打电话给例如方法&#34; validarUsuario&#34;我从KeycloakPrincipal创建了一个新实例我收到了一个例外

  

SimplePrincipal无法转换为KeycloakPrincipal

我不知道如何在SessionContext中使用KeycloakPrincipal对方法SimplePrincipal进行强制转换

0 个答案:

没有答案