Google Oauth2 应用程序类型 Web 服务器与桌面应用程序?
Google Oauth2 Application Type Web server vs Desktop App?
我正在尝试为我的服务器创建一个网络应用程序,它可以将我的网站表单连接到 Google Sheet。在生成 OAuth 客户端 ID 和密码时,我选择了“网络服务器”,我需要输入一个回调 URI 来处理从 Google 返回的授权代码作为响应。
好吧,现在我创建了另一个客户端 ID,但这次我选择应用程序类型为“桌面”,我不需要输入任何重定向 URI。在我的 PHP 应用程序中,我将重定向 URI 用作 urn:ietf:wg:oauth:2.0:oob
.
然而,在这两种情况下,我都能获得访问令牌和刷新令牌,并且我的 Google Sheet API 工作顺利。
所以我的问题是为什么我应该选择应用程序类型作为“网络服务器”并通过输入“重定向 URI”来执行额外的步骤?这样做有什么好处?
您可以在此处查看 Quickstart Oauthflow https://developers.google.com/sheets/api/quickstart/php#step_1_turn_on_the
So my question why I should choose Application Type as "Webserver" and do an extra step by entering "Redirect URI"? What is the benefit of doing so?
安全。 Web 服务器客户端将 return 对您的服务器进行身份验证。安装后会将 return 它传送到请求的来源。如果有人获得了您的 Web 应用程序的客户端 ID 和机密,他们将无法使用它。但是,如果有人获得了您安装的应用程序的客户端 ID 和密码,他们可以轻松地使用它来冒充您的开发者帐户。
什么是客户端 ID 和客户端密码。
将客户端 ID 视为登录名,将机密视为密码。此登录名和密码可将您的项目标识为 Google,并将该项目的开发人员标识为您。
您是开发者,对此登录名和密码负责。如果它被盗,那么据 google 可以看出是您的应用程序在使用它 google 无法知道其他情况。如果桌面应用程序的登录名和密码被盗,有人可以安装一个应用程序,而且据任何人所知,它似乎是您的应用程序。
您创建了超级棒的电子邮件应用程序,可以访问用户的 gmail 帐户。它变得非常流行,很多人都知道这个名字。有人窃取了您的客户 ID 和秘密,创建了一个看起来与您超级棒的电子邮件应用程序一模一样的应用程序。任何人都无法知道它不是。因为它被设置为桌面应用程序,所以此人可以将其安装并开始从您的潜在用户那里获取授权,而他们对此一无所知。它看起来与您的应用程序一模一样,只是响应会发送到 urn:ietf:wg:oauth:2.0:oob,这是安装此应用程序以模仿您的应用程序的人的主机服务器。
除非您的应用程序 运行 在用户计算机上,否则使用已安装的凭据确实不是一个好主意。话虽这么说,他们没有什么可以阻止你这样做的。
我正在尝试为我的服务器创建一个网络应用程序,它可以将我的网站表单连接到 Google Sheet。在生成 OAuth 客户端 ID 和密码时,我选择了“网络服务器”,我需要输入一个回调 URI 来处理从 Google 返回的授权代码作为响应。
好吧,现在我创建了另一个客户端 ID,但这次我选择应用程序类型为“桌面”,我不需要输入任何重定向 URI。在我的 PHP 应用程序中,我将重定向 URI 用作 urn:ietf:wg:oauth:2.0:oob
.
然而,在这两种情况下,我都能获得访问令牌和刷新令牌,并且我的 Google Sheet API 工作顺利。
所以我的问题是为什么我应该选择应用程序类型作为“网络服务器”并通过输入“重定向 URI”来执行额外的步骤?这样做有什么好处?
您可以在此处查看 Quickstart Oauthflow https://developers.google.com/sheets/api/quickstart/php#step_1_turn_on_the
So my question why I should choose Application Type as "Webserver" and do an extra step by entering "Redirect URI"? What is the benefit of doing so?
安全。 Web 服务器客户端将 return 对您的服务器进行身份验证。安装后会将 return 它传送到请求的来源。如果有人获得了您的 Web 应用程序的客户端 ID 和机密,他们将无法使用它。但是,如果有人获得了您安装的应用程序的客户端 ID 和密码,他们可以轻松地使用它来冒充您的开发者帐户。
什么是客户端 ID 和客户端密码。
将客户端 ID 视为登录名,将机密视为密码。此登录名和密码可将您的项目标识为 Google,并将该项目的开发人员标识为您。
您是开发者,对此登录名和密码负责。如果它被盗,那么据 google 可以看出是您的应用程序在使用它 google 无法知道其他情况。如果桌面应用程序的登录名和密码被盗,有人可以安装一个应用程序,而且据任何人所知,它似乎是您的应用程序。
您创建了超级棒的电子邮件应用程序,可以访问用户的 gmail 帐户。它变得非常流行,很多人都知道这个名字。有人窃取了您的客户 ID 和秘密,创建了一个看起来与您超级棒的电子邮件应用程序一模一样的应用程序。任何人都无法知道它不是。因为它被设置为桌面应用程序,所以此人可以将其安装并开始从您的潜在用户那里获取授权,而他们对此一无所知。它看起来与您的应用程序一模一样,只是响应会发送到 urn:ietf:wg:oauth:2.0:oob,这是安装此应用程序以模仿您的应用程序的人的主机服务器。
除非您的应用程序 运行 在用户计算机上,否则使用已安装的凭据确实不是一个好主意。话虽这么说,他们没有什么可以阻止你这样做的。