为什么在GoogleAPI中使用ClientLogin作为web应用是个坏主意?

为什么在GoogleAPI中使用ClientLogin作为web应用是个坏主意?,login,client,google-api,authentication,Login,Client,Google Api,Authentication,我今天刚拿起谷歌API,允许我们网站的一些用户将视频上传到我们自己的组织YouTube帐户。我不希望我们的用户知道我们的用户名和密码,而是让他们选择是否将视频上传到YouTube。如果他们选择这样做,他们会选中一个复选框并点击提交按钮 我一直在看,在《开发者指南》中,ClientLogin在我看来是实现我想要做的事情的最佳选择,它对于web应用程序中的用户身份验证不是一个好主意。“用于web应用程序的AuthSub”似乎不是我想要实现的最佳机制 有什么办法吗 谢谢我也遇到了同样的问题,最后我使用

我今天刚拿起谷歌API,允许我们网站的一些用户将视频上传到我们自己的组织YouTube帐户。我不希望我们的用户知道我们的用户名和密码,而是让他们选择是否将视频上传到YouTube。如果他们选择这样做,他们会选中一个复选框并点击提交按钮

我一直在看,在《开发者指南》中,ClientLogin在我看来是实现我想要做的事情的最佳选择,它对于web应用程序中的用户身份验证不是一个好主意。“用于web应用程序的AuthSub”似乎不是我想要实现的最佳机制

有什么办法吗


谢谢

我也遇到了同样的问题,最后我使用了ClientLogin。如果您不想让用户看到登录过程的任何部分,这就可以了


我不知道是否有更好的方法使用AuthSub或其他身份验证方法来实现这一点。

在使用谷歌API和其他视频服务提供商API之后,我学到了很多关于身份验证的知识。oAuth和AuthSub是google用于向用户帐户验证第三方web应用程序的两种方法

这个过程一开始可能看起来很混乱,但一旦你理解了,就不算太糟糕了。下图显示了AuthSub进程

  • 当web应用程序需要访问用户的Google服务时,它会对Google的授权代理服务进行AuthSub调用
  • 授权服务通过提供访问请求页面进行响应。此Google托管页面提示用户授予/拒绝访问其Google服务。用户可能首先被要求登录到他们的帐户
  • 用户决定是授予还是拒绝访问web应用程序。如果用户拒绝访问,他们将被定向到Google页面,而不是返回web应用程序
  • 如果用户授予访问权限,授权服务将用户重定向回web应用程序。重定向包含一个可供一次使用的授权令牌;它可以兑换成长寿命的代币
  • web应用程序通过请求联系Google服务,使用授权令牌作为用户的代理
  • 如果Google服务识别出令牌,它将提供请求的数据
  • 当你请求认证,用户登录到他/她的谷歌帐户时,在他/她授予你的应用程序在其帐户中进行操作的权限之前,如果你的域尚未在谷歌注册,用户将收到一个讨厌的红色框,告诉他们要小心,因为他们将要访问的应用程序没有向他们注册

    在我看来,这些方法相对于老式学校用户名和密码的优点如下:

  • 增强了用户的安全性:用户不必给你他们的用户名和密码,他们必须登录到谷歌,你将获得一个访问令牌,你将使用它进行任何进一步的API调用。如果用户愿意,他们可以从google内部撤销对您的应用程序的访问
  • 该过程可能会向用户保证您的应用程序是“合法的”。如果用户必须通过谷歌登录并允许你的应用程序,那么如果你的域名已经在谷歌注册过,它可能看起来不错
  • 该令牌可以升级为会话令牌:这意味着您不必在每次需要请求访问google用户帐户时都要求用户登录,只需使用会话令牌(必须安全地保存在某个位置)即可
  • 一旦您了解了这个过程,对用户进行身份验证就非常简单了
  • (未验证)如果用户更改了密码,则不必更新安全令牌
  • 最后,如果您使用oAuth,您可以创建一个接口,允许您在连接到其他web服务(如Vimeo)时轻松对用户进行身份验证 有了所有这些,我想你会明白为什么使用用户名和密码(ClientLogin就是这么做的)来连接用户帐户是个坏主意。其他身份验证方法允许您做同样的事情(请求访问),并增加了一系列优势

    关于如何使用AuthSub对用户进行身份验证的代码可以在这里找到,它几乎是即插即用的。只需确保将$_会话['sessionToken']保存到一个更永久的位置,如数据库


    此处,ClientLogin不是首选机制,因为您的应用程序被迫处理用户的登录凭据。如果用户的身份需要建立超过一个会话的时间,您将被迫存储凭据,这是不理想的——服务器的损坏将导致Google用户的损坏。因此,ClientLogin不是应用程序的正确方法

    你看过吗?它非常优雅地解决了密码处理问题,是一个公认的标准