OAuth with DotNetOpenAuth?

本文关键字:DotNetOpenAuth with OAuth | 更新日期: 2023-09-27 18:09:42

我的问题是。我理解OAuth协议的过程,但是我对它有一些困惑。我试图利用DotNetOpenAuth。这就是我不明白的地方。假设一个用户(一个新用户)尝试使用Twitter登录到我的网站。这个过程是这样的(如果我错了,请随时纠正我):

  • 发出请求令牌(如果我的ConsumerKey和ConsumerSecret是ok的)。
  • 然后颁发授权令牌并将用户重定向到Twitter。
  • 用户授权我的应用程序。并发出一个访问令牌。
  • 我获得当前用户的详细信息并将其存储在数据库中(以及访问令牌)。

到目前为止,一切顺利。这是令人困惑的部分。用户退出。然后返回并再次尝试使用Twitter进行身份验证。如果我在获得访问令牌之前无法获得他的身份,我如何确定他的访问令牌?我在数据库里有他的资料,但我无法确定他是谁,除非他再次经历同样的步骤。我肯定我遗漏了什么,如果你能指出来,我会很感激的。我知道IConsumerTokenManager,我尝试逆向工程InMemoryTokenManager,看看它是如何工作的,但它仍然不清楚。

OAuth with DotNetOpenAuth?

啊,使用授权协议进行身份验证的乐趣(嗯,缺乏乐趣)。我不喜欢OAuth登录。叽阿…

有了这些,让我稍微澄清一下流程:

  • 一个"未经授权"的请求令牌被发出(如果你的ConsumerKey和ConsumerSecret是ok的)。
  • 用户授权您的应用程序,并被发送回您的应用程序
  • 您的请求令牌现在被"授权",DotNetOpenAuth将其交换为访问令牌。
  • 使用访问令牌获取当前用户的详细信息并将其存储在数据库中。

之后,当一个匿名用户访问您的站点并想要登录时,您将重新开始流程。只是这一次,因为Twitter识别用户(如果需要,在他们登录之后),Twitter可能会立即将用户重定向到您的应用程序,而不是要求用户确认登录。请求令牌将被授权,您将把它交换为访问令牌,并使用它来获取用户的数据。哦!现在您可以看到数据与数据库中已有的条目相匹配,并且欢迎您的访问者返回。