C#Web API - 某些GET请求的安全性

时间:2014-04-30 13:10:52

标签: c# api asp.net-web-api get authorization

在现有主机上,我添加了Web API Models&控制器。我添加了以下四个:

  • 产品
  • 订单
  • 分类
  • 用户

当有人访问localhost:port\api\products时,它会返回JSON格式的所有产品。

完全禁用了创建,更新和删除语句,因此我们只能在API上使用GET请求(因此,\api\products表示所有产品的列表,或api\products\#表示单个ID为#)的产品。

由于未使用其他CRUD,因此除了一件事之外,没有太多安全性应添加到Web API中:用户

这些也将返回电子邮件等,如果没有适当的授权(没有完整的登录页面,但是在访问例如Android HttpGetRequests中的Web API时验证自己的方式),最好保持私有和不可读。

所以,问题是:我应该如何仅为Web API访问的UsersController添加授权。

而且,我如何在C#中加密JSON并再次在Android中解密它。如果第二部分太大而无法回答我将在稍后提出一个新问题,那么我的主要关注点是低端[< - 没有登录页面,因此内置于GET请求中] Web授权API的用户GET请求。


编辑1:我确实找到了this link,其中新的项目是通过将更改授权给个人用户而制作的。我还看到用户已注册,然后使用POST和GET请求登录。

阅读此链接时会想到以下问题:

  • 如何在现有项目中将Web API的授权更改为单个用户?
  • 我们的授权是通过OAuth(主要是Google帐户)和我们的工作电子邮件地址完成的。我想,以与在Web API GET请求中使用Google帐户的链接相同的方式进行授权是不可能/容易的。

编辑2:使用Vladimir Gondarev提供的first link后,我已将[Authorize]添加到UsersController中的两个Get方法中。在我的项目中,之前已经使用过其他所有内容,就像使用AuthorizeAttribute的类一样,所以只需添加[Authorize]就足够了第一步。现在在浏览器中,当我没有登录时,我会收到未经授权的(JSON),这很好。

下一步是将OAuth授权添加到Android应用程序,但这是一个全新的问题/问题,我将在询问新的stackoverflow问题之前先查看。

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是" Basic Authentification"。为了实现它,您必须从AuthorizeAttribute派生,然后将其应用于方法或控制器。 在这里您可以找到更多信息:

什么是基本认证:

http://www.asp.net/web-api/overview/security/basic-authentication

实现:

ASP.net Web API RESTful web service + Basic authentication

只要您使用HTTPS传输,就不必加密任何内容。