【问题标题】:OAuth with DotNetOpenAuth?OAuth 与 DotNetOpenAuth?
【发布时间】:2011-11-26 03:15:29
【问题描述】:

好的,这是我的问题。 我了解 OAuth 协议的过程,但是我对此有些困惑。 我正在尝试利用 DotNetOpenAuth。这是我没有得到任何东西的地方。 假设一个用户(一个新用户)尝试使用 Twitter 登录我的网站。 过程是这样的(如果我错了,请随时纠正我):

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

到目前为止,一切都很好。 现在这是令人困惑的部分。用户注销。然后返回并再次尝试通过 Twitter 进行身份验证。我如何确定他的访问令牌,如果我在获得访问令牌之前无法获得他的身份?我在数据库中有他,但是在他再次执行相同的步骤之前,我无法确定他是谁。我确定我遗漏了一些东西,如果您指出,我将不胜感激。我知道 IConsumerTokenManager,我尝试对 InMemoryTokenManager 进行逆向工程,看看它是如何工作的,但仍然不清楚。

【问题讨论】:

    标签: c# asp.net oauth dotnetopenauth


    【解决方案1】:

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

    顺便说一下,让我澄清一下流程:

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

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

    【讨论】:

    • 感谢您花时间回答我。我知道 OAuth 用于授权(它就在名称中,对 :)),我已经编写并测试了 OpenId 的代码,并且使用您的框架很容易。我会随时推荐它。使用 Facebook/Twitter 身份验证的唯一方法(遗憾的是)是通过 OAuth。我已经写了一个数据库消费者令牌管理器,但是 twitter 每次都在要求我授权......所以我认为我错过了一些东西。
    猜你喜欢
    • 2015-11-21
    • 2014-05-05
    • 2023-04-08
    • 1970-01-01
    • 2010-12-11
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    相关资源
    最近更新 更多