如何为saas软件提供cname前向支持

The*_* GN 10 java dns cname saas

我有一个webapp,用户可以在其中创建自己的帐户并使用该服务.现在,我想给他们一个自定义域设施,其中app.customer1web.com在设置自定义域后,使用userid customer1将mysevice.com指向myservice.com,因为看起来我的服务正在他的机器上运行.许多服务,如blogger,wp.com,tumblr都提供此功能.

我怎么做?我正在使用java编写我的Web应用程序.当请求进来时,如何将域名映射到用户ID?

Jak*_*čar 15

当请求进来时,如何将域名映射到用户ID?

显然,您必须将信息存储在某个地方,最有可能存储在数据库中.

  1. 添加domains包含列的数据库表:

    • 顾客ID
    • 名称
    • 有效(1或NULL)
    • 挑战

    为(名称,活动)添加唯一键以确保域名仅映射一次.

  2. 当客户尝试添加域时,添加一个active = NULL且challenge设置为随机字符串的行.

    向客户显示随机字符串,并要求他们在网站上放置一个网页,或者用它创建虚拟DNS记录以验证域名所有权(这就是Google Apps的工作方式).

    您可以通过向管理联系人发送电子邮件或以其他方式验证所有权.

  3. 当客户说他按照您在步骤#2中指示他们执行的操作时,验证它并设置active = 1,challenge = NULL.

    如果该域先前对某个其他客户有效,请删除这些记录或设置active = 0.

  4. 要求客户为其域添加CNAME记录并将其转发到您的域,例如hosted.myservice.com(Google ghs.google.com用于Google Apps).

  5. 当请求进来时,请执行

    SELECT customerId FROM domains WHERE name=:requestDomain AND active=1
    
    Run Code Online (Sandbox Code Playgroud)

一个更好的办法可能是自动提供你的客户的格式域<customername>.myservice.com,除了自定义域.这有两个好处:

  • 不想使用自己域名的客户仍然可以自定义他们的登录页面,例如使用公司徽标.

  • 对于自定义域,您可以要求您的客户转发它们<customername>.myservice.com而不是通用域hosted.myservice.com.

    这使您可以在多个服务器之间水平分区客户,而无需要求客户更改任何内容.例如,您可以为客户提供选择,让他们选择是否希望他们的帐户在欧盟或美国托管.当他们改变它时,只需传输他们的数据并进行更新<customername>.myservice.com.他们的自定义域将自动运行.

为此,您必须为其设置通配符DNS记录*.myservice.com(除非您还需要后一个功能,在这种情况下,您必须管理单个记录).