2009-07-31 15 views
6

Tengo algunos sitios web para el trabajo que viven fuera de la LAN corporativa, y, por lo tanto, fuera del rango de comunicación directa de Active Directory (A/D), pero para los que me gustaría poder autenticar a los usuarios contra los servidores A/D corporativos, así como un repositorio secundario de usuarios/roles ***. El pseudo código para esta actividad es este:¿Cómo me autentico contra Active Directory del código del servicio web ASP.NET?

  1. El usuario ingresa el nombre de usuario/contraseña en el formulario de inicio de sesión del sitio web externo.
  2. El sitio web externo llama a un servicio web dentro de la LAN que puede comunicarse con A/D.
  3. El servicio web verifica si el nombre de usuario/contraseña puede autenticarse asignados a un usuario en A/D. De ser así, devuelva la lista de roles A/D de los que el usuario es miembro.
  4. Si el nombre de usuario/contraseña no se puede encontrar/autenticar contra A/D, verifique una base de datos/servicio que sea el repositorio secundario de información de usuario/rol. Devuelve todos los roles en los que se encuentra el uso si se autentican frente al servidor de autenticación secundario.
  5. Devuelve la lista de roles en los que se encuentra el usuario en el sitio web de la llamada.

*** La idea es que no queremos poner decenas (potencialmente cientos) de contratistas y afiliados en el Directorio Activo cuando todos ellos solo iniciarán sesión en nuestros servidores web externos. De ahí el esquema de autenticación secundaria.

Respuesta

1

Creo que hay un par de capas de aquí, cada una su propia pregunta:

¿Cómo puedo llegar a un servicio web dentro de mi LAN desde la DMZ?
Esta es una pregunta difícil ya que realmente rompe el concepto de una separación DMZ/LAN. En general, las conexiones entre LAN y DMZ solo están permitidas (y de manera limitada) desde el lado de la LAN: de esta forma, una DMZ comprimida no puede iniciar el contacto con la LAN y tiene una restricción extrema en lo que puede hacer (no puede emitir solicitudes arbitrarias, solo responden a las solicitudes de la LAN).

¿Cómo puedo usar un servicio en otra computadora para autenticar un nombre de usuario/contraseña?
De nuevo, este es un problema pegajoso: está pasando contraseñas en una red, es posible que sean interceptados. Con AD, esto se resuelve con kerberos, un sistema de desafío/respuesta que garantiza que la contraseña nunca se transmita realmente. Por supuesto, kerberos y protocolos similares son bastante complejos: nunca intentes robar el tuyo, ya que es probable que sea menos seguro que usar algo existente; por ejemplo, tu servicio web podría funcionar en https, de modo que al menos las contraseñas solo son texto claro en el dos servidores, y no el enlace de comunicaciones entremedio. Los certificados también se pueden usar para evitar que el tráfico destinado a su servicio web LAN sea redireccionado a una máquina DMZ comprimida (la máquina DMZ comprimida no podrá falsificar el certificado, y su sistema puede determinar que está conectado a un servidor falso antes enviando detalles para la autenticación)

En mi propia experiencia, estos problemas hacen que AD fuera de la LAN simplemente no se realice. Las empresas optan por obtener personas externas en la LAN utilizando VPN autenticadas con claves RSA (esos pequeños llaveros que muestran un conjunto de números en constante cambio), o usan un conjunto de inicios de sesión completamente separados para los servicios de área DMZ.

+0

Los servidores web "externos" están en la DMZ y no pueden acceder directamente a los servidores A/D. Sin embargo, existe una regla de firewall para permitir el tráfico del puerto 80/443 desde las Direcciones IP de DMZ específicas de los servidores web externos al puerto/dirección IP específico del servidor de aplicaciones interno (asp.net). En el futuro, podríamos combinar completamente los servidores fuera del sitio, pero la misma excepción de firewall por puerto e IP aún permitiría a los servidores web externos invocar llamadas al servicio web en el servidor de aplicaciones interno. –

1

Es posible que desee echar un vistazo a estos dos recursos. El primero le proporcionará todo lo que desea saber sobre el directorio activo, y el segundo le mostrará cómo conectarse.

Es posible que tenga problemas de conexión con el servidor remoto AD embargo. Así que, como posible alternativa, consideraría que la aplicación web llame a un servicio web de autenticación que resida en la red corporativa.

+0

Creo que tenía la intención de separar los enlaces: http://www.codeproject.com/KB/system/everythingInAD.aspx http://msdn.microsoft.com/en-us/library/aa302397.aspx –

+0

sí , pero solo tengo permitido un enlace en este momento, y ambos son necesarios. Los encontré extremadamente útiles para una implementación de un problema similar que tuve. – andrewWinn

0

Puede simplificar esto dando un portal de inicio de sesión diferente a los contratistas/afiliados.

+0

Las aplicaciones en cuestión serán utilizadas tanto por usuarios internos (A/D) como por usuarios externos (que no sean A/D). Un inicio de sesión tiene que manejar ambos escenarios. –

Cuestiones relacionadas