Аутентификация запросов REST в MVC 2 - PullRequest
2 голосов
/ 06 ноября 2010

Привет ТАК, в последние несколько часов я пытался разобраться с сервисами RESTful, которые можно обслуживать через asp.net MVC. Аутентификация по-прежнему не рассматривается во всех этих уроках и руководствах, которые я нашел во межсетях.

В настоящее время мы используем проверку подлинности на основе форм в нашем существующем приложении MVC. Насколько я понимаю, нам нужно добавить базовую HTTP-аутентификацию, чтобы иметь возможность обрабатывать REST-запросы и разрешения пользователей, связанные с контекстом пользователя. Есть ли способ «смешать» эти два режима аутентификации в одном приложении?

Ответы [ 3 ]

3 голосов
/ 13 ноября 2010

Я не уверен, есть ли что-то встроенное, но вы можете написать свой собственный.Что-то вроде:

var authHeader = Request.ServerVariables["HTTP_AUTHORIZATION"];
if (authHeader.StartsWith("Basic ", StringComparison.InvariantCultureIgnoreCase))
{
    var authParams = Encoding.Default.GetString(Convert.FromBase64String(authHeader.Substring("Basic ".Length)));
    var arr = authParams.Split(':');
    var username = arr[0];
    var password = arr[1];
}   

Если вы пишете свою собственную среду REST в MVC, у вас может быть базовый класс Controller и метод, подобный этому, который запускается перед каждым действием для аутентификации вызывающей стороны.

1 голос
/ 07 ноября 2010

Дейв,

Я понимаю вашу мысль. Структура членства широко использует cookie для аутентификации. Вы передаете свои учетные данные на сервер, сервер проверяет их по пользовательской базе данных и выдает cookie-файл для аутентификации. В следующий раз каждый вызов urs содержит этот файл cookie аутентификации, который сервер использует для аутентификации и авторизации пользователя. Теперь весь этот рабочий процесс работает без проблем при использовании браузеров.

Теперь в вашем сценарии вы можете создать Action в контроллере, который проверяет учетные данные. Вы можете передать учетные данные этому действию в любой из публикаций / получения данных. Вам нужно будет сохранить куки-файл аутентификации в своем коде и включать его каждый раз при совершении звонка на сервер. Вы можете переопределить класс HttpWebRequest, чтобы выполнить эти шаги, и вы можете использовать тот же класс в своем коде.

В случае, если это связано с большими накладными расходами и вы ищете что-то вроде функциональных возможностей веб-служб, я посоветую вам ознакомиться с услугами WCF / Ado.NET Data Services. Они более легко интегрируются в структуру членства и могут лучше подходить для ваших результатов.

Надеюсь, это поможет, спасибо.

1 голос
/ 06 ноября 2010

Вы можете легко использовать структуру членства ASP.NET с сервисами ASP.NET MVC RESTful. См. Следующую ссылку для его реализации с сервисами MVC RESTful.

http://msdn.microsoft.com/en-us/magazine/dd943053.aspx

Если вы не знаете о структуре членства, используйте следующую ссылку

http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx

Надеюсь, это поможет, спасибо

...