Используя API только GET, у меня был бы первый метод, который выбирает уникальный идентификатор сессии.
Например: GET / api? Action = auth & username = user & password = hashedpassword
Вернет токен в 16 символов, который вы храните на своей стороне, и вам потребуется этот уникальный токен для каждого последующего вызова.
Если бы API был создан на PHP, вы могли бы использовать его функцию обработки сеансов PHP для достижения этого (он имеет тайм-аут / сборщик мусора). В ASP.NET есть похожие функции.
Он уязвим для повторной атаки (кто-то захватывает или угадывает идентификатор сеанса), но если вы хотите что-то простое, это путь. Любой не-HTTPS веб-сайт будет уязвим таким же образом. Для дополнительной безопасности вы можете связать идентификатор сеанса с IP-адресом пользователя.