java - politecnico - smart campus/servicios académicos/saber pro
Servidor de identidad WSO2: solo inicio de sesión no enviado a todos los proveedores de servicios (0)
Estoy intentando implementar el cierre de sesión único usando WSO2, pero he chocado contra una pared.
El proveedor de servicios iniciador puede enviar correctamente la solicitud de cierre de sesión al IdP (WSO2) y recibir una respuesta de cierre de sesión. Sin embargo, ningún otro proveedor de servicios conectado está recibiendo el comando de cierre de sesión del IdP.
He habilitado el registro de nivel de depuración para la clase LogoutRequestSender a través de la consola, y estoy viendo el siguiente registro: "Un logoutReqSenderTask se asigna al grupo de subprocesos" .
Al observar el código fuente de la clase LogoutRequestSender, se supone que la clase privada "LogoutReqSenderTask" (que implementa "Ejecutable") crea un registro de depuración con el valor de la SAMLRequest:
public void run() {
List<NameValuePair> logoutReqParams = new ArrayList<NameValuePair>();
// set the logout request
logoutReqParams.add(new BasicNameValuePair("SAMLRequest", logoutReqDTO.getLogoutResponse()));
if(log.isDebugEnabled()) {
try {
log.debug("SAMLRequest : " + SAMLSSOUtil.decodeForPost(logoutReqDTO.getLogoutResponse()));
} catch (IdentityException e) {
log.debug(e);
}
}
//...snip...
}
Sin embargo, este registro nunca se está escribiendo, lo que indica que este código no se está ejecutando.
La única idea que he podido encontrar es que el método "ejecutar" está golpeando una excpección no controlada antes de ingresar al primer "intento" del método, y así nunca llega a escribir el registro (porque este código está usando un "ExecutorService" para poner en cola los hilos, las excepciones no controladas fallarán en silencio).
Aquí hay una muestra (anonimizada) de la solicitud de cierre de sesión que estoy enviando desde mi SP al IdP:
<samlp:LogoutRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
ID="S2E267375A5BFB18E3B54FE839AF43B2F84AAE1E7A"
Version="2.0"
IssueInstant="2015-05-13T20:19:41Z"
Destination="[SSO Server Location]">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">[Issuer name]</saml:Issuer>
<saml:NameID xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient" NameQualifier="[SSO Server Location]">UserName</saml:NameID>
<samlp:SessionIndex xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">d1b98786-f9d7-45dd-9712-a63f8f64cb02</samlp:SessionIndex>
</samlp:LogoutRequest>
¿Qué estoy haciendo mal aquí?