/ / Waffle Kerberos SSO: suplanta los cambios del usuario tomcat: java, tomcat, guardar, inicio de sesión único, waffle

Waffle Kerberos SSO: suplanta los cambios al usuario tomcat: java, tomcat, guardar, inicio de sesión único, waffle

Tengo el siguiente problema con Waffle y Kerberos.

Tengo una aplicación Java Servlet que funciona en Tomcat y tiene un inicio de sesión único en Kerberos para el cual estoy usando waffle.

Para hacer funcionar el SSO tuve que habilitar:

  <init-param>
<param-name>impersonate</param-name>
<param-value>true</param-value>
</init-param>

Cuando configuro la suplantación a falso, el SSO no funciona :(

Y todo parece funcionar bien, los usuarios pueden iniciar sesión en mi aplicación con SSO.

Pero luego descubro que personifican los cambios.El usuario y la aplicación de Tomcat no funcionan bajo derechos de administración sino como usuarioA o usuarioB. Entonces, cuando el usuario A crea un archivo en mi sistema (informe, registro, archivo de configuración), él es el propietario del archivo y luego, cuando el usuarioB inicia sesión y está tratando de acceder a este archivo, obtengo una excepción de Acceso denegado.

Creo un archivo con el siguiente código:

File file = new File(fileName);
file.createNewFile();
file.setExecutable(true, false);
file.setReadable(true, false);
file.setWritable(true, false);

Quiero un trabajo de aplicación sin cambiar de usuario, debe el usuario Tomcat crear, leer y adjuntar archivos (Administrador) no usuarioA o usuarioB.

Necesito Kerberos SSO con waffle, pero no quiero que esta suplantación funcione de esta manera. ¿Hay alguna otra manera de hacer que el waffle funcione? O tal vez puedo guardar archivos de otra manera?

Respuestas

0 para la respuesta № 1

Ok, encontré una solución por mi cuenta.

Con personificar estaba leyendo el usuario registrado de

serverContext.getIdentity().getFqn();

Con la suplantación, leí el usuario registrado correcto, pero cuando desactivé la suplantación obtengo el usuario tomcat (NT AUTHORITYSYSTEM) en lugar del usuario registrado.

Ahora estoy leyendo usuario de

request.getUserPrincipal().getName();

con suplantación desactivada y esto funciona para mí.