2011-03-14 40 views
1

我一直在试图找出digg.com和其他类似网站如何通过oauth处理身份验证。通过oauth创建一个账户非常简单,用户点击twitter/facebook连接按钮,然后digg发送我们的秘密,如果一切正常,则返回此秘密并作为访问令牌存储。Digg.com风格oauth

但是,认证如何以这种方式工作?例如,当我通过twitter按钮点击登录时,一个随机秘密正在发送给Twitter。例如,twitter是否会返回先前的访问令牌,或者digg是否会获取twitter用户ID,然后将其与数据库中存储的值进行比较,然后使用存储的访问令牌?

例如: 1.用户通过twitter点击登录。 2.发送一个秘密,twitter做一些处理并返回信息,如用户名/ ID /等...... 3.基于这些返回值之一,轮询数据库并加载用户行,认证成功。

我在这方面呢?有人可以请赐我吗?

回答

1

以下是基于由hueniverse提供Workflow

用户在点击登录通过Twitter。从Twitter

Digg的请求请求令牌(未特定于用户的,可通过Digg的用于从用户获得用户批准访问用户的信息)。

Digg的接收请求令牌和用户重定向到与RequestToekn Twitter的OAuth的用户授权网址并要求Twitter的重定向用户回来一次认证授予。

OAuth要求服务提供商(Twitter)首先对用户进行身份验证,然后要求他们授予对消费者(Digg)的访问权限。

用户输入的用户名和密码(如果用户尚未登录)。

Twitter通知用户谁正在请求访问(Digg)和授予的访问类型。 (我不熟悉的Digg的,所以采取堆栈Exchange作为另一个例子中,只要求获得用户名。)

用户批准。

Twitter将请求令牌标记为用户授权。 用户的浏览器被重定向回Digg。

Digg使用授权的请求令牌并将其交换为访问令牌(用于访问受保护的资源。如果是堆栈交换,用户名,虽然听起来有点奇怪)。

Digg通过Twitter登录。

下面是一个非官方图片由我: enter image description here


以上是基于官方指南到OAuth 1.0,但根据Introducing OAuth 2.0

的OAuth 2.0是一个全新的协议,并且不与以前的版本向后兼容。但是,它保留了以前版本所建立的总体架构和方法,并且同样的介绍(来自OAuth 1.0官方指南)仍然非常适用。

0

如果您想要实施此类验证,您可以查看example ZF application,其中显示了使用twitter,facebook,google等用于此目的的一种方式。