asp.net-mvc - 如何保护我的 Web API - MVC4 与 Android/iOS 应用程序

标签 asp.net-mvc asp.net-mvc-4 asp.net-web-api

我在这里阅读了很多关于使用 api key 、 token 、hmac 等保护 web api 的问题,但没有找到我正在寻找的答案。

我正在开发一个 MVC4 网络应用程序项目,其中包含互联网和内部网站、网络 API 和 Android/iOS 应用程序。

Web API 将由我的应用程序使用,而不是其他任何人,因为它将访问敏感数据

保护此 API 以便只有我的应用程序可以使用它的最佳方法是什么?看似简单的请求却极难上手。

我已经查看了此处关于使用 HMAC 和其他一些内容的 SO 的帖子,但听起来它们都不适合这里,很可能我只是遗漏了一些东西。

HMAC 是可行的方法还是客户端证书更适合这种情况?

我应该使用 SSL 和某种 API key 吗?

我知道这个问题有点含糊,我已经盯着它看了一个多小时,试图弄清楚如何表达我的想法,所以我想我会发布它并在需要时更新...: (

我非常乐意根据要求提供更多详细信息。

最佳答案

为您的每个应用生成一个 key ,并让它们在每个请求中将 key 作为 token 传递。然后,您的服务器可以验证 key 并对请求进行身份验证。

看看 Basic Authentication来自 ASP.NET 站点的模块。该示例使用“基本”作为授权方案,但您可以改为使用“ token ”来更改它。

private static void OnApplicationAuthenticateRequest(object sender, EventArgs e)
    {
        var request = HttpContext.Current.Request;
        var authHeader = request.Headers["Authorization"];
        if (authHeader != null)
        {
            var authHeaderVal = AuthenticationHeaderValue.Parse(authHeader);

            // RFC 2617 sec 1.2, "scheme" name is case-insensitive
            if (authHeaderVal.Scheme.Equals("token",
                    StringComparison.OrdinalIgnoreCase) &&
                authHeaderVal.Parameter != null)
            {
                AuthenticateUser(authHeaderVal.Parameter);
            }
        }
    }

一旦你有了基本授权模块,你就可以简单地用授权属性装饰任何 Action 或 Controller ,它会将请求转发给基本授权处理程序。

namespace webapi.Controllers
{
     [Authorize]
     public class SensitiveDataController : ApiController
     {
       ...
     }
}

就网络而言,您必须在使用基本身份验证时使用 SSL,因为您的 key 将以纯文本形式传输。

关于asp.net-mvc - 如何保护我的 Web API - MVC4 与 Android/iOS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17197156/

相关文章:

c# - .NET Core 2.0 身份和 jwt?

html - MVC 表单中 'next but one' 元素、复选框和标签的 CSS 选择器

javascript - 将值从 Angular 传递到 webapi put 方法

web-services - Ajax请求期间收到 "no type was found that matches the controller named"错误消息

javascript - 在 ASP.NET MVC 站点的 Bootstrap 文件输入插件中读取服务器响应

c# - 在 ASP.net MVC 3 中的按钮上应用 CSS

c# - 设置 MVC 应用程序后访问被拒绝错误

c# - MVC 4. 和 Entity Framework 表连接

azure - Windows Azure 中的 ERROR_DESTINATION_INVALID

angular - 如何在同一个azure应用程序服务中部署 Angular 应用程序和Web API?