В одном из своих предыдущих постов о проблемах с токенами JWT я говорил об одной насущной проблеме, которую вы можете найти здесь:
Сказка о неразрешимой проблеме с JWT! (Часть 2)Резюмируя проблему просто для краткости: возможности токена JWT не могут быть уменьшены при совместном использовании его с другими службами или объектами. Скажем, например, если вы хотите использовать API Google и хотите, чтобы ваши сценарии приложений только читали ваши электронные письма и извлекали из них некоторую информацию, но вы не хотите, чтобы ваши сценарии приложений выполняли какие-либо другие действия, такие как отправка электронных писем, чтение или совместное использование ваших документов. с остальными. Достаточно честно, верно! Но если вы подумаете о том, чтобы поделиться своим токеном JWT (или токеном OAuth) со своими скриптами приложения, вы в конечном итоге предоставите им все привилегии, которые у вас есть! И мы этого не хотим ...
Возникает вопрос: как нам вообще избежать этой проблемы?
Как нам делегировать разрешения по схеме, где есть эффект «затухания»?
Подумайте на мгновение ... Можете ли вы придумать что-нибудь, что исправляет токены JWT? или Нужна ли для этого какая-то другая конструкция?
Ответ: НЕТ, мы не можем исправить JWT как есть для этой задачи. Токены JWT подтверждают авторизацию, но когда задействовано несколько сторон, в этих случаях JWT не подходят, как мы видели в примере выше!
Так что же нам тогда делать?
МАКАРОНЫ! Да не шутка, мы бы использовали миндальное печенье. Они вкусные и делают свою работу ...
Миндальное печенье - это конструкция, которая обеспечивает делегирование и ослабление . Звучит слишком хорошо, чтобы быть правдой? Становится еще лучше: миндальное печенье позволяет также выражать «сторонние» условия!
Так что же все эти вкусняшки и как они могут решить мои проблемы?
Macaroons используют HMAC делегируемого токена и используют предостережения, которые являются утверждениями, которые он делает (подумайте об этом как о заявлениях JWT).
Итак, идея такая:
Сервер отправляет вам миндальное печенье, подписывая его имеющимся у него ключом. К нему добавляется HMAC миндального печенья (с использованием ключа подписи) для обеспечения целостности!
Теперь предположим, что я хочу делегировать привилегии своему сценарию приложения. Я бы добавил еще одно утверждение, то есть я добавил еще одно предостережение к имеющемуся у меня макарону и подписал его, используя значение HMAC существующего макарона.
Таким образом, можно построить цепочку доверия с предостережениями (действующими как утверждения).
Теперь, когда сервер проверяет, разрешены ли операции для данного пользователя, он проверяет миндальное печенье, проверяет, все ли оно правильно, подписывая предостережения миндального печенья и достигая последнего уровня. И если все в порядке, то разрешения, необходимые для доступа к сервису, проверяются на соответствие всем предостережениям. Если все пойдет хорошо, пользователь или объект получит доступ для выполнения задачи!
Красиво, правда :)
Эта проблема с JWT вообще не может быть решена! Поэтому нам нужна другая конструкция для решения этой проблемы, и мы увидели, как Macaroons решает именно эту проблему!
Надеюсь, этот пост помог вам узнать что-то интересное. Для меня было большим открытием узнать, что такое существует! Лично мне очень понравилось :)
Я мог бы сделать будущий пост о Macaroons и, возможно, подробно описать его и показать несколько примеров с образцом кода. Звучит интересно? Дайте мне знать, если вы хотите увидеть этот пост :)
Понравился этот пост? Поделитесь своими мыслями в комментариях ниже :)
Кстати, если вам нравится моя работа и вы хотели бы поддержать меня, то, пожалуйста, посетите мою страницу на Patreon:
Увидимся!
До следующего раза, продолжайте учиться и желаю взламывать :)
На самом деле, я был положительно убежден в платформе TryHackMe. Потому что, в отличие от CTF, контент доступен постоянно, а модель ценообразования абсолютно разумна.
Здравствуйте, учащиеся, здесь мы собираемся узнать о реализации безопасности Spring с Spring Boot3.0 и JWT.
Вы можете быть исследователем OSINT, игроком CTF или просто тем, кто получает спам-звонки. Кто-то, кто пытается проверить номер, который вы видели в рекламе.
[Предупреждение: в этом эссе есть снимки экрана, на которых люди восхваляют убийцу Джордана Нили.] Сотрудники правоохранительных органов наконец — и, возможно, неохотно — предъявили обвинение в этом убийстве Дэниелу Пенни, человеку, который душил Джордана Нили, пока тот не умер.
Переход к новой карьере может быть чрезвычайно сложным, если вы пытаетесь сделать это в одиночку. Важно найти партнеров по подотчетности, которые находятся на том же уровне обучения, что и вы, у которых схожие цели, упорство и стремление.
В современном гиперсвязанном мире системы СМИ играют ключевую роль в формировании общественного мнения и, следовательно, в демократическом принятии решений. В своем глубоком анализе политической экономии коммуникации ученый Роберт МакЧесни бросает вызов общепринятому мнению и представляет то, что он называет «пятью истинами» о СМИ.