¿Kerberos, delegación y cómo hacerlo correctamente?

Tengo dos aplicaciones caseras separadas que necesitan comunicarse entre sí. Una es una aplicación de frontend (asp.net en realidad), la otra es una interfaz de backend para una aplicación de contabilidad. La interfaz de back-end no se creó específicamente para esta interfaz, es una interfaz genérica que muchas otras aplicaciones utilizan para integrar con nuestro producto.

Para la comodidad de los usuarios, deseamos proporcionar una autenticación de Windows en nuestra aplicación frontend. Eso significa, sin embargo, que debemos pasar las credenciales a la aplicación de back-end que debe verificarlas.

No deseamos configurar nuestro frontend como una aplicación "confiable" para el backend que pueda autenticarse como cualquier usuario. Si el frontend fuera a ser hackeado, también comprometería el sistema backend.

Como lo entiendo, una forma de hacerlo con la autenticación de Windows es la delegación de Kerberos. Sin embargo, esto requiere que se habilite explícitamente para el usuario que se va a delegar, y la máquina que hace la delegación (el servidor con nuestra interfaz). De forma predeterminada, estas opciones están deshabilitadas en Active Directory, y sospecho que muchos administradores de sistemas tendrán sus reservas acerca de cómo activarlas para todos sus usuarios.

Además, no estoy realmente seguro de que esto es para lo que fue diseñada la Delegación de Kerberos. No necesito nuestra interfaz para hacerse pasar por el usuario que se está conectando. Solo necesito demostrar que este usuario se ha autenticado ante mí.

¿Cómo harías esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta