【问题标题】:OAuth proxy- Should we proxy everything or just auth?OAuth 代理 - 我们应该代理所有内容还是仅代理身份验证?
【发布时间】:2012-09-05 09:32:36
【问题描述】:

我们正在构建一个 SaaS 应用程序,我们称之为http://mysaasapp.com。当用户注册时,他们使用子域名http://myinstance.mysaasapp.com 或自定义域名http://instance.mycompany.com 等访问他们的实例。

我们正在考虑与其他服务(Facebook、Twitter 等)集成,以便我们的用户可以在他们的实例中链接到这些服务上的帐户。 Twitter 在涉及 OAuth 重定向回调时非常宽松(我们可以在发出 OAuth 请求时设置回调/重定向 URL)。然而,Facebook 并不那么宽松,回调/重定向域是在 facebook.com 上的应用程序配置中设置的

当用户在他们的实例上使用自定义域名时,他们可以选择使我们网站上的子域 (http://myinstance.mysaasapp.com) 处于非活动状态。这意味着我们不能将 OAuth 的回调域设置为 mysaasapp.com 并期望它能够正常工作。

解决方案是使用 OAuth 代理 (http://proxy.mysaasapp.com)。我们之前使用过HybridAuth,我们相信我们应该能够轻松地将其转换为 OAuth 代理。

话虽如此:

  • 我们应该使用 OAuth 代理来仅代理 Auth 请求吗?一旦我们获得访问令牌,我们应该继续通过代理代理请求还是应该直接从我们的实例连接到提供者?换句话说,是否有任何 OAuth 安全 API 将 API 调用(在身份验证后)限制在某些定义的域?

  • 我应该如何保护 OAuth 代理,以便请求只能来自我们的应用实例,而响应只能发送到我们的应用实例?

【问题讨论】:

    标签: php oauth proxy


    【解决方案1】:

    这就是我最终要做的。

    我创建了一个非常简单的网络应用程序,它是围绕 HybridAuth 构建的。此 web 应用将托管在 oauth.mydomain.com。

    发生的情况是,当用户在他自己的实例中想要连接到诸如 Facebook 之类的提供商时,应用程序实例通过发布提供商类型和一些其他信息来建立到 oauth.mydomain.com 的服务器到服务器连接。代理返回一个令牌。

    然后,我们将用户重定向到 oauth.mydomain.com,同时将令牌作为 get 参数传递。 oauth.mydomain.com 使令牌无效并将信息存储在用户的会话中。

    然后用户继续向提供者进行身份验证。成功后,oauth.mydomain.com 会将消费者令牌和密钥发布回特定端点的实例。

    发布完成后,我们会将他们重定向回他们在 theirdomain.com 上的页面

    我决定不代理所有请求(仅代理身份验证请求),因为这是一种简单的方法,并且提供者(至少我看过的那些)仅在身份验证过程中实施域限制。

    【讨论】:

    • 有趣。我现在需要构建这样的东西。你介意分享你的代码吗?
    猜你喜欢
    • 1970-01-01
    • 2020-05-28
    • 2023-03-25
    • 2020-12-07
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多