我们正在构建一个SaaS应用程序,让我们称之为http://mysaasapp.com。当用户注册时,他们使用子域名http://myinstance.mysaasapp.com或自定义域名http://instance.mycompany.com等访问实例。
我们正在考虑与其他服务(Facebook、twitter等)集成,这样我们的用户就可以在他们的实例中链接到这些服务上的帐户。对于OAuth重定向回调,Twitter非常宽容(当我们提出OAuth请求时,回调/重定向URL可以由我们设置)。然而,Facebook并不那么宽大,回调/重定向域是在应用程序在facebook.com上的配置中设置的
当用户在他们的实例上使用自定义域名时,他们可以选择使我们站点上的子域(http://myinstance.mysaasapp.com)不活跃。这意味着我们不能将OAuth的回调域设置为mysaasapp.com,并期望它能够工作。
解决方案是使用OAuth代理(http://proxy.mysaasapp.com)。我们以前使用过HybridAuth,我们认为应该能够轻松地将它转换为OAuth代理。
话虽如此,但:
发布于 2012-09-06 22:41:02
所以这就是我最后要做的。
我创建了一个非常简单的web应用程序,它是围绕HybridAuth构建的。这个网络应用程序将托管在oauth.mydomain.com。
当用户在自己的实例中想要连接到诸如Facebook这样的提供者时,应用实例通过发布提供者类型和一些其他信息来做服务器到oauth.mydomain.com的连接。代理返回一个令牌。
然后,我们将用户重定向到oauth.mydomain.com,同时将令牌作为get参数传递。oauth.mydomain.com使令牌无效,并将信息存储在用户的会话中。
然后,用户继续与提供程序进行身份验证。如果成功,oauth.mydomain.com会将使用者令牌和键发送回特定端点的实例。
当发布完成后,我们将它们重定向回它们在theirdomain.com上的页面
我决定不代理所有请求(只代理auth请求),因为这是一种简单的方法,而且提供者(至少是我看过的)只在auth过程中实现域限制。
https://stackoverflow.com/questions/12278401
复制相似问题