Я бы не стал использовать файлы cookie в REST API. FormsAuthentication - это метод на основе файлов cookie. Вместо этого вызывающий должен предоставлять учетные данные для аутентификации с каждым запросом в заголовке или в качестве параметра запроса.
Например, вы можете использовать обычную проверку подлинности для передачи имени пользователя и пароля или добавить настраиваемый заголовок проверки подлинности с некоторым зашифрованным токеном доступа (что не очень удобно для RESTful). Вы также можете реализовать OAuth, при котором запрашивающая сторона будет предоставлять токен доступа при каждом запросе.
Я бы написал специальный AuthorizeAttribute
для выполнения аутентификации в вашем коде, который дает вам много возможностей управления. В качестве альтернативы вы можете использовать базовый класс контроллера и переопределить метод OnAuthorization
.
API не должен запрашивать пароль: в веб-приложении неавторизованный запрос обычно перенаправляет пользователя на страницу входа. В API запрос просто возвращает код ошибки. Теперь задача клиентского приложения - вызвать пользователя через диалоговое окно, если это возможно. В мобильном приложении вы можете захотеть показать диалоговое окно. В веб-приложении с OAuth вы, вероятно, захотите перенаправить на сервер аутентификации.
Если вы хотите протестировать свой REST API, я предлагаю вам использовать консоль REST для Google Chrome и cURL. Первый вариант проще для новичков и имеет приятный графический интерфейс, в то время как cURL дает вам еще большую точность и множество протоколов.
ИЗМЕНИТЬ
Несколько педантичное замечание: некоторые API, даже у довольно крупных провайдеров, например Twitter, время от времени возвращают 401
коды состояния, обычно опуская (обязательный) заголовок WWW-Authenticate
, потому что это не было их намерением оспаривать клиента.
person
mnemosyn
schedule
26.08.2011