适用于MVC Flow的OAuth 2.0

时间:2012-10-25 04:05:45

标签: asp.net-mvc asp.net-web-api oauth-2.0

我正在使用OAoC 2.0 for MVC,可以在这里找到:

http://community.codesmithtools.com/CodeSmith_Community/b/tdupont/archive/2011/03/18/oauth-2-0-for-mvc-two-legged-implementation.aspx#comments(这是一些轻量级文档的链接,其中包含项目下载的链接)。

我正在试图找出流程的工作原理。看起来像这样:

  1. 从RequestToken控制器方法获取RequestToken
  2. 然后,控制器将请求令牌传递到OAuthServiceBase.Instance.AccessToken。这最终会转到DemoService类,它继承了抽象的OAuthServiceBase类。此方法使用RequestToken for salt对用户名进行哈希处理,然后将其与密码(已使用RequestToken进行哈希处理和盐析)进行比较。如果匹配,则发出AccessToken。这是示例逻辑 - 这里有一个说明,在实际应用程序中,您应该获得用户的凭据。
  3. 这使我对以下几点感到非常困惑:

    1. 我无法理解RequestToken的用途。 RequestToken在5分钟后过期 - 所以即使示例逻辑正在使用它来填充用户名和密码哈希,我也看不到任何可能的方式,我们会用它来填充用户的哈希密码。
    2. 尽管有上述规定,我在此应用程序中看不到任何用于保存密码哈希的机制。我错过了什么吗?我不想在客户端持久存储salt,所以我不必将未加密的密码存储在db中吗?如果我有持久盐,我可以存储散列和放大器数据库中的salted密码和客户端的salt,然后传递散列密码进行身份验证。
    3. 我很想知道编写身份验证代码的新手。我知道我在这里遗漏了一些东西,我只是不知道它是什么:)

1 个答案:

答案 0 :(得分:3)

Oauth用于为您的计划提供第三方访问权限,它主要用于api's

RequestToken不应该用于限制用户名,密码或者其他内容。当您与Web服务通信时,您会从Oauth获得RequestToken。请求令牌的时间跨度为5分钟,之后您应该请求新令牌。

使用RequestToken的主要优点是分离关注点。在图片中,只有OAuth2授权服务器必须知道用户名和密码。 Google UserInfo服务了解某些操作的有效令牌集。在这种情况下请求帐户信息。

从Google的oauth实施中查看此图片。我希望这一切都清楚。

enter image description here