2009-10-20 17 views
10

En mi servicio web necesito registrar la identificación de la persona que llama, pero wsContext.getUserPrincipal() devuelve nulo aunque el usuario se haya autenticado mediante WS-Security con autenticación de contraseña. De acuerdo con JavaDocs para JAX-WS 2.1, WSContext.getUserPrincipal() solo debe devolver nulo si el usuario no ha sido autenticado.WSContext.getUserPrincipal() devuelve nulo para la autenticación de resumen de contraseña

¿Tengo que hacer algo en el controlador de seguridad para establecer el principal del usuario en el WSContext? Los documentos parecen indicar que se hace automáticamente.

Estoy usando la pila metro 1.1 (creo que 1.1.5) con la pila jax-ws 2.1.3 en Tomcat.

+0

Me pregunto si esto está funcionando ahora. En uno de mis proyectos anteriores usamos el WSContext.getUserPrincipal() y estaba funcionando. Sin embargo, estábamos haciendo autenticación HTTP básica. –

+0

Metro 1.1 es bastante viejo, quizás el metro 1.4 resuelva el problema. Por otro lado, ¿podría agregar todo su volcado WsContext aquí? – korifey

Respuesta

1

Intenta iterar sobre wsContext.getMessageContext(). EntrySet() y muestra los valores, a veces están ahí pero por algún motivo no se pueden recuperar con el método getUserPrincipal().

En este caso, solo tiene que tomar el principal directamente desde allí y dejar un comentario para el futuro que esto no es muy portátil.

+0

+1 por "deja un comentario para el futuro ..." –

Cuestiones relacionadas