Web applications 如何将OAuth与已部署的web应用程序一起使用?

Web applications 如何将OAuth与已部署的web应用程序一起使用?,web-applications,oauth,oauth-2.0,Web Applications,Oauth,Oauth 2.0,我们是一个具有web应用程序的ISV。与StackExchange或Trello不同,此web应用程序安装在客户站点,因此每个web应用程序安装都有一个单独的URL。i、 e:这两个都可能是我们应用程序的有效URL 我们希望使用OAuth访问用户的Google数据(一个简单的首次使用导入来初始化应用程序数据库)。我们的问题是想办法解决这个问题 web应用程序的OAuth(客户端)依赖于在权威机构注册的重定向URL(在我们的例子中是Google)。如果您是Trello或StackExchange,

我们是一个具有web应用程序的ISV。与StackExchange或Trello不同,此web应用程序安装在客户站点,因此每个web应用程序安装都有一个单独的URL。i、 e:这两个都可能是我们应用程序的有效URL

我们希望使用OAuth访问用户的Google数据(一个简单的首次使用导入来初始化应用程序数据库)。我们的问题是想办法解决这个问题

web应用程序的OAuth(客户端)依赖于在权威机构注册的重定向URL(在我们的例子中是Google)。如果您是Trello或StackExchange,您有一个URL,只需将其放入即可。因为我们安装在很多地方,我们可以有很多URL,但我们不知道它们是什么,所以我们不能提前告诉Google要使用什么URL

OAuth for client apps(windows客户端等)通过在窗口标题中返回响应而不是重定向来解决这个问题。这对于完全控制浏览器(即控制沙箱)的应用程序来说非常好,但对于普通浏览器来说,跨站点安全限制使得无法从Google响应窗口获取机密

在非统世界里,我们似乎陷入了两难境地。不是web应用程序,也不是客户端应用程序


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

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


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

您是否建议您拥有一个应用程序,该应用程序将运行在不同用户拥有的多个服务器上,并共享一个数据库?或者您是说您的web应用程序将有多个实例?如果是后者,那就太糟糕了——您必须注册每个实例。我认为,如果一个web应用程序安装到多个公司,那么每个公司都应该被视为一个不同的OAuth客户端。有没有什么特别的原因说明在安装过程中不适合以新应用程序的形式注册到谷歌?该应用程序安装在多个位置,有单独的数据库。每个都是一个单独的实例。这是一个非技术应用程序-安装它与数据库安装和IIS配置足够复杂。为了简化数据库的数量而添加整个Google应用程序注册步骤并不是我们真正想要做的事情。我们希望它是无缝的。