Я кодирую веб-службу C# с использованием веб-API 2, где некоторые из действий CRUD должны иметь некоторую защиту, основанную на подписке пользователя.Безопасность на основе токенов для веб-службы
Каждый пользователь имеет уникальный токен в качестве части своей подписки.
Прежде чем написать свой код для безопасности веб-службы, может кто-нибудь, пожалуйста, сообщите мне, если следующее является безопасным и эффективным методом, а если нет, то почему это небезопасно и эффективно, а также некоторые другие способы решения этой задачи.
Я думаю, что в качестве части каждого запроса веб-службы включен строковый параметр с токеном пользователя. Этот токен затем используется для обеспечения того, чтобы пользователь, выполняющий запрос, владел объектом.
Вот пример функции тока без защиты:
[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);
}
вебсервис может быть доступен любым , из любого приложения.