Эта тема была невероятно запутанной для меня. Я новичок в приложениях HTTP, но мне нужно разработать клиент для iPhone, который будет использовать данные JSON откуда-то. Я выбрал Web API от MS, потому что это казалось достаточно простым, но когда дело доходит до аутентификации пользователей, все становится довольно сложно.
Я поражен тем, как мне не удалось найти наглядный пример того, как аутентифицировать пользователя, прямо с экрана входа в систему и использования Authorize
атрибута в моих ApiController
методах после нескольких часов поиска в Google.
Это не вопрос, а просьба привести пример того, как именно это сделать. Я посмотрел на следующих страницах:
Несмотря на то, что они объясняют, как обрабатывать неавторизованные запросы, они явно не демонстрируют что-то вроде LoginController
или что-то подобное, чтобы запрашивать учетные данные пользователя и проверять их.
Кто-нибудь готов написать хороший простой пример или указать мне правильное направление, пожалуйста?
Спасибо.
источник
Ответы:
Это потому, что вы запутались в этих двух понятиях:
Аутентификация - это механизм, с помощью которого системы могут безопасно идентифицировать своих пользователей. Системы аутентификации дают ответы на вопросы:
Авторизация - это механизм, с помощью которого система определяет, какой уровень доступа должен иметь конкретный аутентифицированный пользователь к защищенным ресурсам, контролируемым системой. Например, система управления базой данных может быть спроектирована так, чтобы предоставлять определенным указанным лицам возможность извлекать информацию из базы данных, но не возможность изменять данные, хранящиеся в базе данных, в то же время предоставляя другим лицам возможность изменять данные. Системы авторизации дают ответы на вопросы:
Authorize
Атрибут в MVC используется для применения правил доступа, например:Приведенное выше правило разрешит доступ к методу только пользователям с правами администратора и суперпользователя.
Эти правила также можно установить в файле web.config, используя
location
элемент. Пример:Однако перед выполнением этих правил авторизации вы должны пройти аутентификацию на текущем веб-сайте .
Отсюда мы можем разделить проблему на две части:
Аутентификация пользователей при использовании служб веб-API в одном веб-приложении
Это будет самый простой подход, потому что вы будете полагаться на аутентификацию в ASP.Net
Это простой пример:
Web.config
Пользователи будут перенаправлены на маршрут учетной записи / входа в систему , где вы будете создавать пользовательские элементы управления для запроса учетных данных пользователя, а затем вы будете устанавливать cookie-файл аутентификации, используя:
Межплатформенная аутентификация
Этот случай может быть, когда вы предоставляете только сервисы веб-API в веб-приложении, поэтому у вас будет другой клиент, использующий сервисы, клиент может быть другим веб-приложением или любым приложением .Net (Win Forms, WPF, консоль, служба Windows, и т.д)
Например, предположим, что вы будете использовать службу веб-API из другого веб-приложения в том же сетевом домене (в интрасети), в этом случае вы можете полагаться на проверку подлинности Windows, предоставляемую ASP.Net.
Если ваши сервисы доступны в Интернете, вам необходимо будет передать аутентифицированные токены каждой службе Web API.
Для получения дополнительной информации, обратите внимание на следующие статьи:
http://stevescodingblog.co.uk/basic-authentication-with-asp-net-webapi/
http://codebetter.com/johnvpetersen/2012/04/02/making-your-asp-net-web-apis-secure/
источник
Если вы хотите пройти аутентификацию по имени пользователя и паролю и без файла cookie авторизации, атрибут MVC4 Authorize не будет работать сразу после установки. Тем не менее, вы можете добавить следующий вспомогательный метод к вашему контроллеру для принятия базовых заголовков аутентификации. Вызывайте его с самого начала методов вашего контроллера.
Со стороны клиента этот помощник создает
HttpClient
заголовок с аутентификацией:источник
Я работаю над проектом MVC5 / Web API, и мне нужно было получить разрешение для методов Web Api. Когда мое индексное представление загружается впервые, я вызываю метод веб-API 'token', который, я считаю, создается автоматически.
Код на стороне клиента (CoffeeScript) для получения токена:
В случае успеха вызывается следующее, которое сохраняет токен аутентификации локально:
Затем, если мне нужно сделать Ajax-вызов для метода веб-API с тегом [Authorize], я просто добавляю следующий заголовок к своему Ajax-вызову:
источник
response.access_token
взялся. Вы устанавливаете это из кода C # ..?