gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 09:24:01 26 4
gpt4 key购买 nike

我在这里阅读了很多关于使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com