2015-04-23 4 views
0

Я создаю сайт AngularJS с аутентификацией, основанной на JWT. Когда я успешно регистрирую заявку, бэкэнд возвращает мне JWT, и это сохраняется в localStorage.Как я могу расшифровать в AngularJS JWT с открытым ключом?

Я хочу получить роли пользователя в заявках JWT, но я прочитал токен из localstorage, и поэтому его можно просто модифицировать (например, используя инструменты chrome dev), и злоумышленник может помещать поддельные роли в JWT.

Как я могу проверить токен на стороне клиента с помощью открытого ключа ?. Я предполагаю, что сервер NodeJS генерирует токен, используя соответствующий им секретный ключ, используя jwt-simple

Заранее благодарен!

+2

Вопрос «как декодировать в AngularJS» довольно бессмыслен. AngularJS - это среда MVVM, и она не заботится о шифровании или проверке или каких-либо других структурах данных. Вы также не можете упомянуть, если это токен JWS или JWE - первая нужна только проверка; последнее дешифрование. В конечном счете, подтверждение претензий зависит от вашего сервера, на котором происходит реальное управление доступом на основе ролей. –

ответ

2

и злонамеренный пользователь может поставить поддельные роли в JWT

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

Если вы хотите проверить JWT, чтобы правильно показать, скажем, GUI, вы можете использовать JS-библиотеку для этого, например. http://kjur.github.io/jsjws/.

+0

Итак, давайте представим, что ваше клиентское приложение действительно получило поддельный токен, доверяло ему и пыталось выполнить какое-то действие с высокими привилегиями. Приложение отправит запрос на сервер с фальшивым токеном, и он потерпит неудачу. Таким образом, единственное, что «хакер» достигнет, это сделать приложение _look_, как будто оно способно делать много вещей, а на самом деле этого не произойдет. – yozh

+0

Опять ты прав. На самом деле сервер не отвечает, поскольку токен недействителен. Я только хочу проверить токен в клиенте, чтобы избежать «хакерских» достижений чувствительных областей приложения. – tristobal

+0

Это прекрасно, и вы можете использовать библиотеку, упомянутую в ответе, она имеет простой API и поддерживает множество алгоритмов. Имейте в виду, однако, что проверка не остановит пользователя-изгоев от просмотра уязвимых областей пользовательского интерфейса (это только вопрос редактирования исходного исходного кода в консоли браузера) - если вы не готовы также защищать статический контент с помощью токенов - в котором проверка на стороне клиента не имеет значения. – yozh

Смежные вопросы