Подтвердить что ты не робот

Аутентификация RESTFul с помощью WebAPI

У меня есть веб-служба, созданная с помощью WebAPI, которая принимает запросы JSON и соответственно отвечает. Архитектура ядра построена, но аутентификации/авторизации нет.

После большого количества поисковых запросов и поиска пробных проектов я не уверен, с чего начать. Я нашел массу материалов с 2008 по 2009 год, но не так много недавних руководств/рабочих процессов для приложений WebAPI/single page. Я думаю, что рабочий процесс должен быть следующим:

  • Проверьте, вошел ли пользователь в систему: как это можно сделать с помощью javascript? Отправить файл cookie в мой webAPI? Если да, отправьте этот файл cookie в качестве параметра в теле запроса?

  • Позвольте пользователю войти в систему/зарегистрироваться: как эти данные зашифрованы/дешифрованы? Конечно, я не могу отправлять пароли через провод... это где SSL входит?

  • Предоставьте им доступ к тому, что у них есть права на доступ: я думаю, что получил это - я могу просто разрешить в контроллерах по запросу.

Любая информация была бы потрясающей.

4b9b3361

Ответ 1

Клиенты JavaScript уникальны. У вас есть веб-API и страница, обслуживающая JavaScript в том же домене? Если нет, у вас есть те же ограничения политики происхождения. Если у вас есть тот же веб-приложение, на котором размещаются веб-страницы и веб-API, вы можете использовать формы Authn. В этом случае вам не нужно отправлять cookie, содержащий идентификационный билет, непосредственно из JavaScript. Браузеры делают это для вас, и это является причиной проблемы XSRF. Вы должны быть осторожны с отправкой учетных данных, которые конечный пользователь не должен знать. Если JavaScript что-то знает, любой интеллектуальный конечный пользователь может получить эти знания. OAuth 2.0 подразумеваемый грант может быть хорошим выбором. Конечный пользователь вводит учетные данные (пароль) на сервере авторизации, который выдает токен доступа. JavaScript получает токен и представляет его веб-API, но он никогда не будет иметь доступа к учетным данным.

Ответ 2

В основном вам нужна аутентификация или авторизация на основе токенов. Если вы ссылаетесь на ASPAP WebAPI, следующий проект станет отличным местом для начала: http://thinktecture.github.com/Thinktecture.IdentityModel.45/

Даже если вы не используете ASP.NET WebAPI, следующее видео - отличное представление о том, как обеспечить аутентификацию/авторизацию в веб-службах RESTful: http://vimeo.com/43603474

Чтобы ответить на некоторые из ваших вопросов:

Проверьте, вошел ли пользователь в систему: как это можно сделать с помощью javascript? Отправить файл cookie в мой webAPI? Если да, отправьте этот файл cookie в качестве параметра в теле запроса?

Вы можете использовать cookie, но я обычно использую заголовок, чтобы избежать обычных атак XSRF. Файлы cookie автоматически включаются всякий раз, когда HTTP-запрос отправляется из браузера.

это где SSL входит?

Да. Если вы собираетесь использовать подход на основе токенов, вы можете использовать отдельный сервер (Identity Server) для аутентификации для вас.