sobre - ¿Por qué usar subdominios para designar inquilinos en una aplicación web multi-tenant?
pythonizame (2)
- Vea abajo.
- Las cookies serían las más obvias, y la segunda es que puede cambiar la configuración de DNS para un subdominio pero no para una ruta
- No
- Parcialmente, mira arriba.
Preguntas
- ¿Por qué algunas aplicaciones web multi-tenant usan subdominios para designar al inquilino mientras que otras no?
- ¿Hay razones técnicas, de privacidad o de seguridad?
- ¿Depende del idioma o el marco utilizado para desarrollar la aplicación web?
- ¿Es simplemente una cuestión de estilo o elección del desarrollador?
Ejemplos de aplicaciones web que utilizan subdominios para designar inquilinos
Ejemplo de aplicaciones web que no utilizan subdominios para designar inquilinos
Hay varias formas de determinar el inquilino en el nivel HTTP:
- dominio: el inquilino lo determina todo el encabezado del
Host
- subdominio - parte de subdominio del encabezado de
Host
- ruta basada en - segmento de ruta, generalmente por prefijo
host.com/tenantId/...
- basado en cookies: el valor de la cookie contiene la identificación del inquilino (¡la buena estructura encripta esto!)
- usuario: sesión de usuario o algunos registros de datos en el servidor
Aquí hay una respuesta a sus preguntas:
El multi-arrendamiento de (subdominios) es bueno si desea dar a un usuario una percepción de arrendamiento totalmente aislado. El cliente puede querer una página de inicio de sesión y de bienvenida personalizada, una base de usuarios separada, etc. Por otro lado, el multi-tenancy basado en ruta es bueno para los usuarios que no están fijos en el espacio de nombres de un único inquilino. Es utilizado principalmente por redes sociales como Facebook, GitHub, etc.
Los (sub) dominios pueden brindarle un mejor aislamiento y control de seguridad para las cookies, el intercambio de recursos de origen cruzado (CORS). Hace CSRF o XSS de inquilinos cruzados un poco más difíciles. Además, si tiene control sobre DNS o Load-Balanceer, puede asignar inquilinos a diferentes IP (piense en el geo-enrutamiento) oa varias versiones de la aplicación (por ejemplo, inquilinos beta). Puede asignar una instancia de aplicación o servidor por separado para sus inquilinos más importantes. De esta forma obtienes una herramienta barata para controlar el riesgo de un solo punto de falla y todos los huevos en una sola canasta.
Cualquier web-framework que le dé acceso a encabezados HTTP (
Host
) tiene capacidad para subdominios. Cualquier framework web serio de MVC debería darle un subdominio como parámetro de acción directamente o mediante un plugin.Definitivamente es una opción de diseño. Si desea saber de la mejor manera, piense qué nivel de aislamiento desea para sus inquilinos. Si decide pero verá que el camino no es el correcto, puede migrar a otro nivel con la ayuda de la redirección HTTP 301.