12

我一直在研究这个 Oauth 概念,但我仍然对这个概念感到非常困惑。我的主要问题之一是如何注册 google 帐户或 twitter 帐户。

例如,假设要注册到我的网站,您必须提供用户名/密码/电子邮件/组名。如果您通过我的网站注册,则可以非常轻松地提供这些字段。但是,假设用户想通过谷歌注册。这些字段将如何填充?

据我了解,一旦您使用您的谷歌凭据注册,您将被重定向到我网站上的一个页面,您可以在其中填写必填字段。我不确定这是否正确。谁能帮我更多地理解这一点?

4

2 回答 2

13

基本上 OAuth 是这样工作的(取决于版本,这些点由多个步骤组成):

  • 您将用户重定向到他登录的提供商
  • 用户被重定向回你,你收到一个访问令牌

然后,您可以使用此访问令牌向提供者请求用户数据。通常,提供商会提供一个电话,您可以使用该电话询问用户的电子邮件地址、全名和(特定于提供商的)用户 ID,但这不是 OAuth 的一部分。

您现在如何使用这些信息来处理该用户,就好像他登录到您的网站一样,这完全取决于您自己。每次看到新的用户 id时,您可能都想在自己身边创建一个新的用户对象。

于 2012-09-18T17:51:24.253 回答
6

在理解如何使用 OAuth2 进行新用户注册之前,有几个基本概念需要弄清楚。这些是:

  • 资源所有者(你,人类)
  • 身份提供者(Google、Facebook、Twitter 等)
  • 资源服务器(与身份提供者或其他服务相同)
  • 资源(你想访问的东西)
  • 客户端应用程序(您用来访问这些内容的应用程序)

对于新用户注册,您将遵循客户端应用程序请求授权以访问资源的相同顺序。这将触发登录页面,用户登录,授权代码(由 IdP)创建并发送回客户端应用程序。客户端应用程序将此代码交换为访问令牌(涉及一些加密签名,请阅读文档 - 基本上允许客户端应用程序证明自己的身份)。

然后,此访问令牌用于请求对资源的访问 - 在本例中为新的用户配置文件。这可以是姓名、电子邮件、图片等。使用它在您的客户端应用程序配置文件数据库中创建一个新行。创建一个新的用户帐户。

然后对于后续登录,客户端应用程序将使用此访问令牌通过 Google Auth 服务器验证其生命周期 - 然后创建本地会话/cookie 以登录用户。

希望这很清楚。

于 2017-06-14T07:36:25.917 回答