Как токен Bearer работает в аутентификации на основе токенов с использованием Asp.net MVC 5? - PullRequest
0 голосов
/ 26 февраля 2019

Я пробовал аутентификацию на основе токенов, как и ссылка на сайт .

У меня все работает нормально.Но у меня есть 2 вопроса

  1. После добавления приведенного ниже кода он проверяет каждый запрос от клиента и проверяет пользователя.В случае успеха он вернет некоторые данные, если нет, то покажет неавторизовано .

    Но проблема в том, что после того, как я вошел в систему (http://localhost:49501/Home),, он показывает успех только на на той же вкладке браузера (http://localhost:49501/Home/Data).

    Но после того, как я вошел в систему (Tab1) и попытался посетить тот же URL (http://localhost:49501/Home/Data), но на другой вкладке (tab2) с тем же браузером Chrome, этопоказывая несанкционированную ошибку

Data.cshtml

 var  authHeaders = {};
 authHeaders.Authorization = 'Bearer ' + sessionStorage.setItem('accessToken');

 $.ajax({
     url: "http://localhost:49501/api/values",
     type: "GET",
     headers: authHeaders,
     success: function (response) {
         console.log('Success');
     }
 });
Действительно ли безопасно отправлять токен с помощью AJAX?Потому что все коды появляются на стороне клиента.

1 Ответ

0 голосов
/ 28 февраля 2019
  1. В вашем коде есть одна проблема, которую я вижу в строке:

    authHeaders.Authorization = 'Bearer ' + sessionStorage.setItem('accessToken');

sessionStorage.setItem метод имеет два обязательных параметра и выдать ошибку без него, при выполнении этой команды в консоли разработчика должна быть указана ошибка js.Правильное использование для sessionStorage:

// Save data to sessionStorage
sessionStorage.setItem('key', 'value');

// Get saved data from sessionStorage
let data = sessionStorage.getItem('key');

// Remove saved data from sessionStorage
sessionStorage.removeItem('key');

// Remove all saved data from sessionStorage
sessionStorage.clear();
Чтобы ответить на ваш второй вопрос «Действительно ли безопасно отправлять токен с помощью AJAX? Потому что все коды появляются на стороне клиента.»

Идея состоит в том,генерировать некоторые accessToken на сервере, используя учетные данные пользователя, который действителен в течение ограниченного времени.Преимущество заключается в том, что вы можете авторизовать последующий запрос, используя authToken, до тех пор, пока он не будет действителен, и вам не нужно хранить реальное имя пользователя и пароль для авторизации каждого запроса.Также, добавив некоторый механизм для обновления токена безопасности, если сеанс активен в течение более длительного периода, вы можете запретить пользователю выходить из системы / запрос на повторную авторизацию.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...