我使用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进行强制转换