Tengo dos separados caseros para las aplicaciones que necesitan comunicarse entre sí. Uno es un frontend de la aplicación (asp.net en realidad), la otra es una interfaz de backend para una aplicación de contabilidad. La interfaz de backend no fue creada específicamente para este frontend – es una interfaz genérica que muchos otros en el uso de aplicaciones para integrar nuestro producto.

Para la comodidad de los usuarios queremos proporcionar una Autenticación de Windows en nuestro frontend de la aplicación. Eso significa que, sin embargo, que necesitamos para pasar las credenciales en el backend de la aplicación que tiene para su comprobación.

No queremos configurar nuestro frontend como «de confianza» de la aplicación para el backend que puede autenticarse como cualquier usuario. Si el frontend iba a ser hackeado, entonces también comprometer el sistema de back-end.

A mi entender, una forma de hacerlo con la Autenticación de Windows es la Delegación de Kerberos. Sin embargo, esto requiere de manera explícita habilitado para el usuario que se va a delegar, y la máquina que hace la delegación (el servidor con nuestro frontend). Por defecto, estas opciones están deshabilitadas en Active Directory, y sospecho que muchos administradores de sistemas tienen sus reservas acerca de inflexión para todos sus usuarios.

También, no estoy muy seguro de que esto es lo que la Delegación de Kerberos fue destinado. Yo no necesito a nuestro frontend para suplantar al usuario que se está conectando. Solo me falta probar que este usuario se ha autenticado a sí mismo en mí.

Cómo hacer esto?

¿Cuál es la parte final de autenticación? Indicar la delantera está Integrada de Windows (para una intranet de la aplicación), pero es la parte final de la aplicación WIA también?
Kerberos es para esto – por ejemplo, a los Usuarios de nuestra LAN se conectan a un servidor web que a su vez se conecta a un Servidor SQL server utilizando las credenciales del usuario. Esto nos permite tener cada tabla/campo de permisos dependiendo del tipo de usuario. La dificultad aquí es que ambos sistemas deben ser conscientes de la delegación de Kerberos – el sitio web para obtener las diferentes fichas y el back-end para validar contra la misma autoridad. Yo no creo que esta va a ser posible directamente, pero usted puede ser capaz de establecer una delegación consciente de proxy entre la interfaz de usuario y el back-end.

OriginalEl autor Vilx- | 2009-10-22

3 Comentarios

  1. 8

    No me queda claro lo que puede y no puede hacer con el caso de uso, pero puedo responder a la pregunta lo que la Delegación de Kerberos fue destinado.

    Primero vamos a hablar acerca de lo que Kerberos hace antes de la delegación. Es importante entender esta parte bien porque es sutil.

    Kerberos autentica la identidad de TANTO extremos de una comunicación entre dos puntos finales a través de una red, los puntos de terminación puede ser interactivo de los usuarios o de los servicios que se ejecutan en un ordenador.

    Este es autenticación fuerte por lo que no va a permitir que un hombre en el ataque medio y en cualquier forma. Si se ha configurado correctamente un punto final puede garantizar que no va a ser comprometida. Para el nivel de el nombre del servicio (si se conecta a IIs en un equipo es diferente al conectar a SQL Server en el mismo equipo). Hace un uso intensivo de las modernas técnicas de cifrado y requiere el uso de certificados de seguridad. Los detalles del protocolo de autenticación son complicadas y no vale la pena entrar en ahora, sino que involucra a cerca de 20 distintos pasos de la confirmación entre los dos autenticación de los puntos finales y el servidor de autenticación (en windows el Controlador de Dominio es el servidor de autenticación).

    Entonces, ¿qué diablos es la delegación?

    Delegación es una extensión de Microsoft para la Kerberos estándar que
    permite que una fuente de confianza para continuar con la autenticación a otro
    punto final.

    Esto le permite actuar como un «hombre en el medio» – sin embargo muchas opciones de configuración tienen que ser explícitamente la instalación, certificados instalados, etc para permitir que esto funcione. Está lejos de ser simple. (EDIT: Aquí hay otro MODO de respuesta en los detalles – https://stackoverflow.com/a/954154/215752)

    Así, por ejemplo, usted podría tener a alguien autenticar a un sitio web y, a continuación, tienen la .NETO código de conectarse a un Servidor de SQL COMO EL MISMO USUARIO para leer los datos con que los derechos del usuario.


    Ahora para responder a su pregunta, ya que no estoy seguro de lo que quieres hacer me presentan tres opciones:

    1) al Que desea conectarse a la parte final del sistema como el MISMO usuario que la autenticación en el sitio web.

    • En este caso la delegación de Kerberos es perfecto-hace exactamente lo que usted desea.

    2) al Que desea conectarse a la parte final del sistema como un usuario DIFERENTE de la autenticación en el sitio web (por ejemplo, una cuenta de servicio).

    • En este caso usted no desea que la delegación. Kerberos para el sitio web y Kerberos (como un usuario diferente) a la parte final será un gran trabajo.

    3) al Que desea conectarse a la parte final del sistema con el MISMO usuario con algo de tiempo y como un usuario DIFERENTE a otras veces. (Por ejemplo, usted necesita para validar esta es una persona jurídica de usuario para la parte final del sistema, pero desea llevar a cabo acciones de confianza como un sistema de cuenta de otros tiempos. Este es (en mi experiencia) el uso más común de los casos.)

    • En este caso, se utiliza tanto. Delegación para las conexiones que necesita para validar la identidad del usuario y, a continuación, volver a la cuenta de servicio de identidad de las veces cuando usted necesita el sistema de acceso a la parte final. (Una pregunta anterior de la mina entró en los detalles de cómo volver al sistema de identidad en el .NETA de la plataforma de ver Cómo que «no suplantar» (onu-delegado?) en Kerberos.)
    esto debe ser aceptado respuesta, buena visión de conjunto que es relevante para muchas situaciones específicamente antes de responder a la OP.

    OriginalEl autor Hogan

  2. 0

    Aquí es un post describiendo cómo funciona Kerberos y cómo configurarlo.

    ASP.NET pasando a lo largo de credenciales de Autenticación de Windows

    Bueno, sí, que es MI post. 🙂 Y esta es la siguiente. Las preguntas son diferentes. Su respuesta me hizo dudar de si estoy usando Kerberos en el camino correcto.
    opps lo Siento demasiado temprano. Pensé que era extraño que dos preguntas como que iba a venir tan cerca.

    OriginalEl autor kemiller2002

  3. 0

    Realmente la delegación de Kerberos está diseñado exactamente para este caso de uso. Pero el reto aquí es el arte esta en un sistema heredado y con el ANUNCIO de la configuración que usted no quiere cambiar.

    Un posible hack es para tener la Delantera acaba de enviar el usuario y el momento de la autenticación, pero el motor puede consultar el Directorio Activo Registros de Sucesos para determinar si el usuario se ha autenticado en el extremo Delantero. Esto requiere el uso de Registro de Eventos de WIndows API.y también jugar con la configuración del Registro de Eventos en el año de registro de la emisión de tickets de servicio. (Recuerdo que este es el valor predeterminado)

    Yo diría que esto está abierto al abuso y la más carga el sistema, mayor es la probabilidad de un falso aprobación que va a ocurrir. También asume que todos los relojes están perfectamente sincronizados (esperemos cierto, pero no garantizado)
    No me puedo imaginar que esto iba a funcionar de una manera segura.

    OriginalEl autor R V Marti

Dejar respuesta

Please enter your comment!
Please enter your name here