将用户安全转移到不同 URL 同时保持其 'logged in' 状态的最佳方式
Best way to securely transfer user to different URL while maintaining their 'logged in' status
在我们最新版本的 SAAS 产品中,我们将其设计为允许我们的客户部署该软件的多个实例。
我们要求将注册和登录紧密集成到主域中——“向新客户销售产品”网站 PrimaryDomain.com,该网站的“注册”和“登录”表单使用 jQuery/AJAX 对数据提交给予响应反馈。
当客户成功登录后,将向他们显示我们产品的所有已安装实例的列表。我们产品的所有已安装实例都可以跨数十个域托管,但为了让这个问题简单起见,它们托管在 [subdomain].SecondaryDomain.com(代码 + 数据库).
每个已安装的实例还具有一个管理面板,目前客户需要根据需要手动登录到每个单独的实例。
我们希望客户能够单击任何已安装实例旁边的 'view admin panel' 并自动登录 [subdomain].SecondaryDomain,因为他们已登录 PrimaryDomain.com.
SecondaryDomain.com 自然无法访问 PrimaryDomain.com 的 cookie 或会话变量,那么什么是允许 SecondaryDomain.com 授权的最佳方式?
我们考虑了几个不同的选项,例如;
正在研究域可以共享 cookie/session 数据的一些巧妙方法?
生成一个令牌,当单击 'view admin panel' 到第二个域时,该令牌随 url 一起传递。 token是userid加上子域唯一的(比如md5 hash),然后在接收端验证。
将一次性令牌记录到数据库中并使用 url 发送并让 SecondaryDomain.com 连接到 PrimaryDomain.com的数据库来验证一次性使用的令牌并设置适当的会话和cookie变量。
一次性使用令牌似乎是正确的方法,但我还没有找到任何具体的答案(a)这是否是正确的方法,以及(b)安全隐患是什么是吗?
对于这种情况,我建议使用 SAML。 SAML 要求您拥有身份提供者 (IdP) 和服务提供者 (SP)。用户将登录到 IdP 并将令牌出示给任何访问过的 SP。 SP 需要配置为针对 IdP 断言令牌。您可能想查看 Auth0 的 SAML SSO 产品以获取更多信息,但还有其他供应商也在做同样的事情。
在我们最新版本的 SAAS 产品中,我们将其设计为允许我们的客户部署该软件的多个实例。
我们要求将注册和登录紧密集成到主域中——“向新客户销售产品”网站 PrimaryDomain.com,该网站的“注册”和“登录”表单使用 jQuery/AJAX 对数据提交给予响应反馈。
当客户成功登录后,将向他们显示我们产品的所有已安装实例的列表。我们产品的所有已安装实例都可以跨数十个域托管,但为了让这个问题简单起见,它们托管在 [subdomain].SecondaryDomain.com(代码 + 数据库).
每个已安装的实例还具有一个管理面板,目前客户需要根据需要手动登录到每个单独的实例。
我们希望客户能够单击任何已安装实例旁边的 'view admin panel' 并自动登录 [subdomain].SecondaryDomain,因为他们已登录 PrimaryDomain.com.
SecondaryDomain.com 自然无法访问 PrimaryDomain.com 的 cookie 或会话变量,那么什么是允许 SecondaryDomain.com 授权的最佳方式?
我们考虑了几个不同的选项,例如;
正在研究域可以共享 cookie/session 数据的一些巧妙方法?
生成一个令牌,当单击 'view admin panel' 到第二个域时,该令牌随 url 一起传递。 token是userid加上子域唯一的(比如md5 hash),然后在接收端验证。
将一次性令牌记录到数据库中并使用 url 发送并让 SecondaryDomain.com 连接到 PrimaryDomain.com的数据库来验证一次性使用的令牌并设置适当的会话和cookie变量。
一次性使用令牌似乎是正确的方法,但我还没有找到任何具体的答案(a)这是否是正确的方法,以及(b)安全隐患是什么是吗?
对于这种情况,我建议使用 SAML。 SAML 要求您拥有身份提供者 (IdP) 和服务提供者 (SP)。用户将登录到 IdP 并将令牌出示给任何访问过的 SP。 SP 需要配置为针对 IdP 断言令牌。您可能想查看 Auth0 的 SAML SSO 产品以获取更多信息,但还有其他供应商也在做同样的事情。