java dns saas cname

java - Cómo dar soporte directo a cname para el software Saas



dns (3)

Tengo una aplicación web donde los usuarios pueden crear su cuenta y usar el servicio. Ahora quiero darles un servicio de dominio personalizado donde app.customer1web.com apunta a myservice.com con userid customer1 una vez que configura el dominio personalizado, para el mundo parece que mi servicio se está ejecutando en su máquina. Muchos servicios como blogger, wp.com, tumblr dan esta característica.

¿Cómo puedo hacer eso? Estoy usando Java para escribir mi aplicación web. ¿Cómo mapeo el nombre de dominio a ID de usuario cuando entra la solicitud?


No estoy muy seguro de si realmente entiendo lo que le gustaría hacer, pero trato de darle una posible solución (al menos para la parte de Java de su problema).

Una posibilidad sería configurar su servidor de aplicaciones de forma tal que cada solicitud sea manejada por un único Servlet (web.xml). Este servlet puede encontrar la URL de solicitud ( HttpServletRequest.getRequestURI ) y extraer el nombre de usuario. Entonces usted conoce al usuario y puede usar esta información para lo que le gustaría hacer.

¡Tenga en cuenta que hay muchas cosas de DNS implicadas en lo que le gustaría hacer! (Por lo menos tan bien como yo lo entiendo)


Una solución que podría usar es configurar un registro DNS de WildCard para su aplicación, y hacer que la aplicación revise el RequestURI para ver qué nombre de host están ingresando los usuarios.

Sé que esta es una respuesta muy vaga, pero parece que se ha configurado el registro de WildCard, con una única función que verifica que el nombre de host sea tu mejor opción. De esta manera, no tiene que configurar un registro DNS cada vez que un cliente se registra, y tiene más tiempo para hacer otras cosas ... ¡como agregar nuevas funciones a su aplicación!


¿Cómo mapeo el nombre de dominio a ID de usuario cuando entra la solicitud?

Obviamente, tendrá que almacenar esa información en algún lugar, muy probablemente en una base de datos.

  1. Agregue un domains tabla de base de datos con columnas:

    • Identificación del cliente
    • nombre
    • activo (1 o NULO)
    • reto

    Agregue una clave única para (nombre, activo) para asegurarse de que un nombre de dominio se asigna solo una vez.

  2. Cuando un cliente intente agregar un dominio, agregue una fila con active = NULL y desafíe el conjunto a una cadena aleatoria.

    Muestre la secuencia aleatoria al cliente y pídales que coloquen una página web en el sitio o que creen un registro DNS falso para verificar la propiedad del dominio (así es como lo hace Google Apps).

    Puede verificar la propiedad enviando un correo electrónico al contacto administrativo o de alguna otra manera.

  3. Cuando el cliente dice que hizo lo que les indicó que hicieran en el paso 2, verifíquelo y establezca active = 1, challenge = NULL.

    Si el dominio estaba previamente activo para algún otro cliente, elimine esos registros o establezca active = 0.

  4. Pídale al cliente que agregue un registro CNAME para su dominio y hosted.myservice.com a su dominio, por ejemplo, hosted.myservice.com (Google usa ghs.google.com para Google Apps).

  5. Cuando llega una solicitud, hazlo

    SELECT customerId FROM domains WHERE name=:requestDomain AND active=1

Una mejor manera puede ser ofrecer automáticamente a sus clientes un dominio en el formato de <customername>.myservice.com , además de dominios personalizados. Esto te da dos beneficios:

  • Los clientes que no desean usar su propio dominio todavía pueden personalizar su página de inicio de sesión, por ejemplo, con el logotipo de una empresa.

  • Para los dominios personalizados, puede solicitar a su cliente que los reenvíe a <customername>.myservice.com lugar de a un hosted.myservice.com genérico.

    Esto le permite particionar horizontalmente a los clientes entre múltiples servidores sin tener que pedirles a los clientes que cambien nada en su extremo. Por ejemplo, podría ofrecer a los clientes la opción de elegir si desean que su cuenta se aloje en la UE o en los EE. UU. Cuando lo cambian, solo transfiere sus datos y actualiza <customername>.myservice.com . Su dominio personalizado funcionará automáticamente.

Para hacer esto, debe configurar un registro DNS comodín para *.myservice.com (a menos que también necesite la última característica, en cuyo caso deberá administrar los registros individuales).