使用Web API进行OAuth身份验证说明

时间:2013-05-12 17:20:44

标签: c# authentication oauth asp.net-web-api

在过去的几周里,我一直在阅读有关身份验证以及通过RESTful服务保护和验证用户的不同方法的任何内容,更具体地说是asp.net web api。这真的是我第一次进入http身份验证,我读的越多,我就越感到困惑。

让我详细介绍一下我项目的应用基础设施......

我正在构建一个RESTful服务,它将作为Web应用程序的数据访问层。应用程序本身几乎是由AngularJS构建的SPA。用户登录和CRUD操作都将通过API处理,并通过http NOT HTTPS完成。

我已经阅读了很多不同的文章/例子,我认为我的方向对我的目标有意义。我希望我的方法类似于Amazon Web Services的身份验证方式,并且Buzz Media上有一个great article,专门描述了他们如何在高级别进行身份验证。我还发现example非常类似于文章中的高级描述(特别是服务器代码部分)。

但有一些事情我很困惑......

  1. 当用户通过客户端登录时(在我的情况下为Angular),客户端将使用用户密码创建哈希。哈希将包含apikey,以及只有api和客户端知道的秘密。登录时客户端获得的秘密如何?似乎首先必须在登录之前获取请求以获取秘密,然后创建哈希并发送另一个请求来验证用户?代码示例非常有用。
  2. 我会使用DelegatingHandler还是创建一个自定义的Attrubite来装饰每个控制器?为什么?
  3. 一旦用户被认为已经过身份验证,我就会创建一个nonce,它将存储在该用户的数据库中并在响应中返回。客户端将在下一个请求中使用此nonce。在上面的服务器代码示例链接中生成随机数,但永远不会将其发送回客户端。该示例使用自定义属性,但我对如何在响应中将此随机数返回给客户端感到困惑?再一次,代码示例非常有用。
  4. 从那里开始,只是客户端在每个请求中散列apikey,nonce和data,并且API服务在响应中发回新的nonce?我错过了什么吗?

0 个答案:

没有答案