Назовите мой веб-api из jquery безопасно

У меня есть простой вопрос, который может указать на сложный ответ: (

У меня есть web api, который отлично работает. Но теперь я хочу настроить аутентификацию/авторизацию. Мне нужно, чтобы он работал на всех платформах, но в основном из jQuery. Естественно, я не хочу отправлять свое имя пользователя и пароль по конвейеру в виде обычного текста следующим образом:

function GetAllCategories() {
 var credentials = $.base64.encode('r3plica:mypassword');
 var authType = "Basic " + credentials;
 $.ajax({
 url: "http://localhost:18904/api/Categories",
 type: "GET",
 beforeSend: function (xhr) {
 xhr.setRequestHeader("Authorization", authType);
 },
 success: function (data) {
 alert('Success!');
 },
 error: function () {
 alert('error');
 }
 });
}

поэтому я смотрел другие альтернативы. Является единственной альтернативой для использования 3-х сторонних OAuth? Я надеялся просто передать ключ/значение строки запроса в api и позволить этому обрабатывать все, но я просто не могу найти пошаговый процесс для этого. Все кажется настолько сложным.

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

Мне удалось получить эту работу: http://codebetter.com/johnvpetersen/2012/04/04/moving-from-action-filters-to-message-handlers/ Из того, что я могу сказать, вам нужно зашифровать вашу строку (имя пользователя) до отправки на api с помощью вашего открытого ключа, а затем api расшифрует с помощью закрытого ключа и авторизует вас.

поэтому мои 2 вопроса просты:)

  • Вы можете использовать вышеуказанную ссылку и легко позвонить из jQuery (т.е. не использовать сторонние библиотеки).
  • Если нет, то какой способ защитить свой API так, чтобы его можно было вызвать непосредственно из вызова jQuery.ajax?

Просто для пояснения, я использую SSL для API

Приветствия заранее,

/r3plica

2 ответа

Для веб-сайтов (где пользователь может посмотреть исходный код) мы генерируем через PHP AuthenticationToken и помещаем его в javascript. Значок изменяет каждую перезагрузку страницы.

например:

[...]
$.ajax( [..]
 beforeSend: function (xhr) {
 xhr.setRequestHeader("ownToken", authToken);
 },

и проверьте, что Token Serverside.


У вас нет большого количества вариантов для обеспечения оптимальной защиты вашего приложения, поскольку все вызовы выполняются из внешнего приложения, поэтому вызовы всегда можно обнюхать.

Однако вы можете рассмотреть возможность использования ssl в сочетании с аутентификацией asp.net.

Пожалуйста, посмотрите на мое другое сообщение для возможностей аутентификации: Параметры проверки подлинности веб-API ASP.NET

Возвращаясь к вашим вопросам: То, что вы пытаетесь достичь, может быть просто выполнено с использованием аутентификации форм asp.net. Вы можете украсить ваши методы просмотра (в классе контроллера) с помощью атрибута Authorize;

[Authorize]

licensed under cc by-sa 3.0 with attribution.