3

我正在使用 MVC 的 OAuth 2.0,可以在这里找到:

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

我试图弄清楚流程是如何工作的。它似乎是这样的:

  1. 从 RequestToken 控制器方法中获取 RequestToken
  2. 然后控制器将请求令牌传递给 OAuthServiceBase.Instance.AccessToken。这最终会转到继承抽象 OAuthServiceBase 类的 DemoService 类。此方法使用 RequestToken 对用户名进行哈希处理,然后将其与密码(也已使用 RequestToken 进行哈希处理和加盐处理)进行比较。如果它们匹配,它会发出一个 AccessToken。这是示例逻辑 - 这里有一条说明,在真实的应用程序中,你应该去获取用户的凭据。

这让我对以下几点感到很困惑:

  1. 我无法理解 RequestToken 的用途。RequestToken 将在 5 分钟后过期 - 因此,即使示例逻辑使用它对用户名和密码散列进行加盐,我也看不到任何可能的方法可以用它加盐用户的散列密码。
  2. 尽管有上述规定,我在此应用程序中看不到任何用于加密密码哈希的机制。我错过了什么吗?我不想在客户端持久存储盐,所以我不必将未加密的密码存储在数据库中吗?如果我有一个持久盐,我可以将散列和加盐密码存储在数据库中,并将盐存储在客户端,然后将散列密码传递给身份验证。

正如您可能知道的那样,我通常是编写身份验证代码的新手。我知道我在这里遗漏了一些东西,我只是不知道它是什么:)

4

1 回答 1

3

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

RequestToken 不应该用来加盐用户名、密码或其他任何东西。当您与 Web 服务通信时,您会从 Oauth 获得一个 RequestToken。请求令牌有 5 分钟的时间跨度,之后您应该请求一个新令牌。

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

从谷歌的 oauth 实现中检查这张图片。我希望这一切都清楚。

在此处输入图像描述

于 2012-10-25T10:24:14.997 回答