我正在使用Web API 2编写C#Web服务,其中一些CRUD操作需要基于用户订阅的某些安全性。基于令牌的Web服务安全
每个用户都有一个唯一的字符串标记作为其订阅的一部分。
在我为web服务安全编写代码之前,有人能告诉我以下是否安全有效的技术,如果不是,为什么这不安全和有效以及其他一些方法来完成此任务。
我在考虑作为每个web服务请求的一部分,包含用户令牌的字符串参数。然后使用此令牌确保发出请求的用户拥有该对象。
这里是没有安全的电流函数的一个例子:
[System.Web.Http.HttpGet]
[Route("Getdata/{id:int}")]
[ResponseType(typeof(Data))]
public async Task<IHttpActionResult> GetData(int id)
{
Data data = await dbSetService.Get(id);
if (data == null)
{
return NotFound();
}
return Ok(data);
}
在这里与基于令牌的安全相关的功能的例子:
[System.Web.Http.HttpGet]
[Route("Getdata/{string:token},{id:int}")]
[ResponseType(typeof(Data))]
public async Task<IHttpActionResult> GetData(string token, int id)
{
Data data = await dbSetService.Get(id);
if (data == null)
{
return NotFound();
}
//Check if the owner of the data object has the correct token, and the object is returned if the token is correct
return Ok(data);
}
的web服务可以由任何人访问,来自任何应用程序。