【问题标题】:C# Web API - Security for some of the GET requestsC# Web API - 一些 GET 请求的安全性
【发布时间】:2023-03-09 21:43:02
【问题描述】:

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

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

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

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

因为没有使用其他 CRUD,所以应该向 Web API 添加很多安全性,除了一件事:用户

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

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

而且,如何在 C# 中加密 JSON 并在 Android 中再次解密。如果这第二部分太大而无法回答,我稍后会提出一个新问题,我的主要关注点是 Web API 的低端 [


编辑 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-question 之前,我将首先研究它。

【问题讨论】:

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


    【解决方案1】:

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

    什么是基本认证:

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

    实施:

    ASP.net Web API RESTful web service + Basic authentication

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

    【讨论】:

    • 感谢第一个链接,在我将 [Authorize] 添加到 UsersController 的 Get-methods 之后,这已经足够了,因为项目中已经存在其他所有内容。由于我已经为 Android 应用添加了 OAuth 授权,因此我现在可以专注于 Android 应用并将 Web API 更改提交到在线主机。
    猜你喜欢
    • 2016-02-08
    • 2020-07-21
    • 2014-06-15
    • 2019-10-09
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    相关资源
    最近更新 更多