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 № 1Ok, 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í.