【问题标题】:How to use OAuth with deployed web apps?如何将 OAuth 与已部署的 Web 应用程序一起使用?
【发布时间】:2012-09-05 08:17:49
【问题描述】:

我们是具有 Web 应用程序的 ISV。与 StackExchange 或 Trello 不同,此 Web 应用程序安装在客户站点上,因此每个 Web 应用程序安装都有一个单独的 URL。即:http://app.example.com/http://app.microsoft.com/ 都可能是我们应用的有效 URL。

我们希望使用 OAuth 访问用户的 Google 数据(一个简单的首次使用导入来启动应用数据库)。我们的问题是试图弄清楚如何使这项工作。

Web 应用程序(客户端)的 OAuth 取决于在授权机构(在我们的例子中是 Google)注册的重定向 URL。如果您是 Trello 或 StackExchange,您只有一个 URL,然后将其输入。由于我们安装在很多地方,我们可以有许多 URL,我们不知道它们是什么,所以我们不能告诉 Google 哪些 URL提前使用。

客户端应用程序(Windows 客户端等)的 OAuth 通过在窗口标题中返回响应而不是重定向来解决此问题。这对于完全控制浏览器的应用程序来说非常有用 - 即控制沙盒,但对于普通浏览器,跨站点安全限制使得从 Google 响应窗口获取秘密是不可能的。

在 OAuth 世界中,我们似乎陷入了两难境地。不是网络应用,也不是客户端应用。

我们如何将 OAuth 与安装在多个位置的多个 Web 应用程序一起使用?

【问题讨论】:

  • 您是否建议您有一个可以在不同人拥有的多台服务器上运行的应用程序,这些服务器将共享一个数据库?或者您是说您的网络应用程序将有多个实例?如果是后者,那就太糟糕了——你必须注册每个实例。
  • 我认为如果一个 Web 应用程序安装到几家公司,每个公司都应该被视为一个不同的 OAuth 客户端。在安装过程中作为新应用程序注册到 Google 是不合适的,有什么特别的原因吗?
  • 该应用程序安装在多个位置,具有单独的数据库。每个都是一个单独的实例。这是一个非技术应用程序 - 通过数据库安装和 IIS 配置来安装它已经足够复杂了。为了简化数据库的填充而添加整个 Google 应用程序注册步骤并不是我们真正想做的事情。我们希望它是无缝的。

标签: web-applications oauth oauth-2.0


【解决方案1】:

抱歉,注册过程的存在是有原因的。如果它位于多个公司拥有的多个 URL 上,它们将被视为单独的应用程序,它们应使用不同的客户端 ID/客户端密码并由相应的所有者注册。您只需要为您的客户提供有关他们应该如何注册应用程序的说明,或者如果您有服务团队安装它,则将其作为部署过程的一部分。

构建多租户应用程序有很多好处,而不必这样做只是其中之一!

【讨论】:

    猜你喜欢
    • 2014-04-05
    • 2017-01-13
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多