Как реализовать безопасность в вызовах REST в .NET, используя NANCY и RESTsharp? - PullRequest
4 голосов
/ 11 декабря 2011

Как добавить уровень безопасности в мое приложение REST, я контролирую и мой сервер, и клиента, я использую NANCY в качестве сервера и RESTsharp в качестве клиента.

Мне трудно понять, как сделать звонки безопасными, если поддержка REST не поддерживает состояния.

Спасибо

1 Ответ

4 голосов
/ 23 декабря 2011

Комментарий Кристиана может быть достаточным для ваших нужд. В нем показано, как использовать надстройки Nancy для Basic или FormsAuth, а RESTSharp поддерживает Basic auth прямо из коробки.

Я уже давно создаю REST API, управляемый Нэнси, в работе, мы использовали как RESTSharp, так и обычный HTML + JS в качестве клиентов, и мы решили реализовать нашу собственную аутентификацию на основе сеансов (частично потому, что те надстройки не существовало, когда мы реализовали). Однако, что приятно, так это то, насколько просто использовать его независимо от того, что поддерживает клиент. Я быстро объясню, как это работает.

Клиент отправляет свое имя пользователя и пароль (или, если хотите, идентификатор и секретный ключ), чтобы создать новый ресурс сеанс , используя POST /sessions (используйте HTTPS). Этот ресурс содержит сеансовый ключ , который можно использовать для последующих вызовов. Сеанс истекает через X минут бездействия.

Для каждого звонка в службу требуется действительный ключ сеанса (кроме создания сеанса). Ключ предоставляется в виде файла cookie или в строке запроса. При использовании RESTSharp мы обычно устанавливаем это как cookie и просто продолжаем использовать его, пока не истек срок его действия.

Наконец, сеанс можно уничтожить, вызвав DELETE /session/{key}.

Это простой, но эффективный (при условии HTTPS) способ защиты REST API.

В качестве альтернативы вы можете реализовать OAuth, который RESTSharp также поддерживает из коробки.

...