Аутентификация через http с использованием веб-API в asp.net

Я смотрел и просматривал множество страниц по защите веб-API asp.net, в том числе: http://weblogs.asp.net/jgalloway/archive/2012/03/23/asp-net-web-api-screencast-series-part-6-authorization.aspx и http://weblogs.asp.net/jgalloway/archive/2012/05/04/asp-net-mvc-authentication-customizing-authentication-and-authorization-the-right-way.aspx - однако я еще не видел примера типа KISS.

Если у меня есть веб-API, который, например, возвращает список автомобилей, и я работаю с третьей стороной (т. е. не с моим собственным веб-сайтом или сервером/доменом), которая хочет запросить (получить) и вставить (опубликовать) списки автомобили по типу, в мою базу данных, как мне их аутентифицировать (через https)?

Они просто добавляют (в свой JSON GET/Post) что-то вроде:

[
{"username":"someusername","password":"somepassword",
{
"carTypeID":12345,
"carTypeID":9876}
"carTypeID":2468}
}
}
]

Затем я могу получить имя пользователя и пароль и проверить свою базу данных членства в .net, а «IfUserAuthenticated» продолжить обработку остальной части JSON?

Или есть лучший способ сделать это? Я слышал о добавлении деталей в заголовки и т. д., но я не уверен, что это по какой-то причине или слишком усложняет. Я также слышал об установке токенов, которые отправляются обратно третьей стороне — если это лучший метод, какие инструкции я им даю, чтобы создать свою часть приложения, которое будет использовать мой API?

Спасибо за любые советы / указатели,

отметка


person Mark    schedule 11.06.2012    source источник
comment
В дополнение к базовому подходу аутентификации в принятом ответе см. этот вопрос и ответ Дарина Димитрова о том, как использовать аутентификацию с помощью форм: stackoverflow.com/questions/11014953/   -  person Jim Harte    schedule 13.06.2012


Ответы (3)


Если вы хотите, чтобы это было просто, вы можете использовать обычную аутентификацию. Через SSL это довольно безопасно. Это просто включает в себя добавление заголовка к запросу:

Authorization: Basic <username:password encoded as base64>

Вы можете найти способ реализовать это здесь< /а>.

person Carles Company    schedule 11.06.2012

Вы можете использовать базовую аутентификацию HTTP вместе с SSL. Его очень просто реализовать с помощью обработчиков сообщений, и он поддерживается на многих платформах. См. пример в моем блоге (его очень легко интегрировать с поставщиком членства по вашему выбору)

http://www.piotrwalat.net/basic-http-authentication-in-asp-net-web-api-using-message-handlers/

person Piotr Walat    schedule 24.08.2012

Я написал нечто подобное для веб-API:
http://remy.supertext.ch/2012/04/basic-http-authorization-for-web-api-in-mvc-4-beta/

Сейчас он используется в нескольких местах, и мы используем его примерно 2 месяца в производстве. Кажется, работает нормально.

person Remy    schedule 30.07.2012