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?
- El usuario ingresa el nombre de usuario/contraseña en el formulario de inicio de sesión del sitio web externo.
- El sitio web externo llama a un servicio web dentro de la LAN que puede comunicarse con A/D.
- 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.
- 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.
- 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.
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. –