我是开发API的新手,并且已经将ASP.NET web api功能构建到我现有的MVC项目中。我希望客户能够发送我可以持久保存到我的数据库的多个对象实例的JSON,但是目前API只包含框架提供的Values模板,我想要解决它的安全问题。现在,在继续开发API之前:
[Authorize]
public class ValuesController : ApiController
{
// GET api/<controller>
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/<controller>/5
public string Get(int id)
{
return "value";
}
// POST api/<controller>
public void Post([FromBody]string value)
{
}
// PUT api/<controller>/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/<controller>/5
public void Delete(int id)
{
}
}
Authorize标记要求用户立即登录我的网站,我很困惑在这种情况下如何以编程方式调用我的API。
我想要保护api,因此想要使用它的客户端必须提供其唯一的API密钥才能访问功能。此外,我想使用此API密钥来确定哪个用户调用了API,以便我可以仅使用他们的数据来响应它们。
从早期起点开始实施这一步骤有哪些步骤(仅仅集成了Web Api功能)?
我一直在看HMAC身份验证并对其感到困惑,尽管这看起来与我在实施后看起来相当复杂之后的情况类似(可能只是因为我在一个新领域在这里)我认为必须有一种更简单的方法来实现我的目标吗?
答案 0 :(得分:2)
快速解决方案是扩展AuthorizeAttribute
并在那里定义您的身份验证逻辑。有关示例,请参阅this SO question。
更模块化的方法是创建身份验证过滤器。见ASP.NET docs here。这样您就可以分开身份验证和授权。
对于HMAC与基本身份验证,我会使用更简单的基本身份验证,安全性不是系统的关键组件。这样你可以更快地发送v1.0。