Токен Авторизации / Хабр

Что такое аутентификация на основе токенов?

Аутентификация на основе токенов – это один из многих методов веб-аутентификации, используемых для обеспечения безопасности процесса проверки. Существует аутентификация по паролю, по биометрии. Хотя каждый метод аутентификации уникален, все методы можно разделить на 3 категории:

  1. аутентификация по паролю (обычное запоминание комбинации символов)

  2. аутентификация по биометрии (отпечаток пальца, сканирование сетчатки глаза, FaceID)

  3. аутентификация токенов

Аутентификация токенов требует, чтобы пользователи получили сгенерированный компьютером код (или токен), прежде чем им будет предоставлен доступ в сеть. Аутентификация токенов обычно используется в сочетании с аутентификацией паролей для дополнительного уровня безопасности (двухфакторная аутентификация (2FA)).

Если злоумышленник успешно реализует атаку грубой силы, чтобы получить пароль, ему придется обойти также уровень аутентификации токенов. Без доступа к токену получить доступ к сети становится труднее. Этот дополнительный уровень отпугивает злоумышленников и может спасти сети от потенциально катастрофических нарушений.

Подробнее об использовании java, чтобы сделать маркер аутентификации и сборки приложений безопасности

Понимание маркер аутентификации имеет решающее значение для построения современного веб-приложения.Есть два основных метода подписания и encryling лексем: хэш и открытый ключ / закрытый ключ.Оба метода является основой безопасности в Интернете.

Посмотреть на HMACWikipedia страница Для продолжения обучения на основе хэш-коды аутентификации сообщений (HMAC), используемую в JWT.Чтобы понять / выделенное шифрование с открытым ключом,Red Hat провела прекрасное введение 。

После того, как вы действительно удовлетворены эти два технологий, вы можете посмотреть на него.О MEDIUMО JWTОтличный учебник 。

Вам также может понадобиться для зренияспецификация RFC 。

В конце весны, я узналSIVA TECH LAB этого урокаЭто полезно, чтобы объяснить, как использовать OAuth 2.0 для реализации приложений загрузки Spring.

Ниже приводятся некоторые другие ссылки на блог окта, который может помочь вам продолжать двигаться вперед:

Введите spring бутсу использовать java, чтобы сделать маркер аутентификации

Готовы ли вы использовать Java?Я готов к использованию Java.

Первое, что вы должны сделать, этоМагазин от GithubLibelonНаш пример приложения 。

Теперь, с помощью следующей команды терминала для обнаруженияstartВетвь:

Почему стоит использовать токены авторизации?

Многие люди считают, что если текущая стратегия работает хорошо (пусть и с некоторыми ошибками), то нет смысла что-то менять. Но токены авторизации могут принести множество выгод.

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

Рекомендации по аутентификации на основе токенов

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

Что такое маркеры доступа?

По словам Microsoft, в Windows до версии Vista (версии начиная с Vista также используют “фильтрованный” маркер для контроля учетных записей UAC, который, по сути, является первичным маркером без административных прав) существует два типа маркеров доступа:

“…существует два вида маркеров доступа: первичные и имперсонализирующие. Каждый процесс имеет первичный маркер доступа, который описывает контекст безопасности учетной записи пользователя, связанной с данным процессом. Обычно первичный маркер доступа назначается процессу, чтобы сообщить ему информацию, касающуюся безопасности.

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

Нас интересуют именно имперсонализирующие маркеры, поскольку они используются в клиент-серверных взаимодействиях. Нам нужно позаботиться об имперсонализирующих маркерах привилегированных пользователей при соединении с удаленными серверами и через “серверы”, то есть, серверные службы, которые применимы как к рабочим станциям Windows, так и к полноценным Windows-серверам.

Чтобы увидеть, как можно использовать имперсонализацию, рассмотрим FTP-сервер, с которым вы соединяетесь под авторизованной учетной записью. Авторизованная учетная запись, вероятно, имеет права на загрузку и скачивание файлов только из определенных директорий.

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

Существует четыре уровня имперсонализации: анонимный, идентификация, имперсонализация и делегирование. В данном блоге TechNet дается описание этих уровней:

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

Уровень имперсонализации означает, что процесс может выполнять действия от имени другого пользователя… Имперсонализация ограничена только локальными для данного компьютера задачами… Процесс не может ‘запустить задачу’ или ‘запросить объект’, которые располагаются вне его системы… Делегация находится на шаг впереди имперсонализации: процесс может вызывать ресурсы и выполнять задачи на других компьютерах. …делегирование – это возможность, предоставляемая протоколом аутентификации Керберос, и часто называемая аутентификацией ‘двойного прыжка’ (double hop) – наши учетные данные перепрыгивают с одного компьютера на другой, освобождая нас от необходимости заходить на каждый из этих компьютеров отдельно.”

На практике, с точки зрения атакующего, ценность имеют маркеры уровня имперсонализации и уровня делегирования, поскольку они позволяют коду выполняться в контексте безопасности иного пользователя.

События, участвующее в символической сертификации

Использование маркеров аутентификации, событие, связанное было четко описано в следующем рисунке –

Oauth2 роль

Доверительная роль в реализации OAuth приведена ниже

Субсидий Авторизация

Oauth2 предусматривает четыре вида наград авторизации –

Обновить маркер потока

После того как доступ к маркеру истекло после того, как период времени (в соответствии со следующим примером является 119), мы можем использоватьrefresh tokenРегенерация новый эффективный доступпорядок 。При отправке оригинальный маркер доступа, вы будете приходить с маркером, как показано ниже –

{  
   "access_token":"04f12761-501b-415b-8941-52bce532ce60",
   "token_type":"bearer",
   "refresh_token":"fc348b4f-de62-4523-b808-9935b1f2e46f",
   "expires_in":119
}

Нажмите здесь, чтобы перейти к официальному документу oauth2

Run spring загрузки app

OK.Пусть это станет реальностью вместе!

Запустите приложение Spring загрузки с помощью следующей команды:./gradlew bootRun 。

Вы должны увидеть много текста в конце следующего:

Безопасно ли использование токенов?

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

Аутентификация на основе токенов, когда она используется в тандеме с другими методами аутентификации, создает барьер 2FA, предназначенный для того, чтобы остановить даже самого продвинутого хакера. Поскольку токены могут быть получены только с устройства, которое их производит – будь то брелок или смартфон, системы авторизации токенов считаются очень безопасными и эффективными.

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

Голова peepen маркер

Я знаю, что некоторые люди думают, что JWT скучен.Даже непрозрачный.Тем не менее, если вы знаете, как с ними разговаривать, JWT очень интересно.Давайте декодировать пример JWT и просматривать содержимое.

Заголовка кодируется только Base64url.Это говорит нам тип маркера и хэш-алгоритм, используемый, как правило, HMAC SHA256 или RSA.

{
  "typ": "JWT",
  "alg": "HS256"
}

Кстати, jsonwebtoken.ioЭто отличный интерактивный инструмент для кодирования и декодирования JWT.

Запуск маркера запроса снова

Выполнить запрос, используйте свой диапазон на этот раз.

Защита маркеров доступа

Теперь давайте посмотрим, что можно сделать для решения данной проблемы. К счастью, Microsoft предоставляет нам простой и эффективный способ защиты наших привилегированных учетных записей. Практически для всех привилегированных учетных записей домена вам следует включить опцию “Account is sensitive and cannot be delegated” в свойствах учетной записи:

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

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

Давайте проведем тесты и посмотрим, все ли работает так, как ожидалось. Проверим, что получится после применения к учетной записи MSAD2-RESPONDER1 показанных выше настроек и перезагрузки тестовых машин.

Использование java для создания и проверки jwt

Я уже упоминал наш JJWT проект?Просмотр егоGitHub страница 。Это полностью открытым исходным кодом для решения Java JWT.

Давайте посмотрим на пример JJWT создать использование JWT.

Используйте jwt с oauth 2.0

Многие реализации OAuth 2.0 используют JWT для их маркеров доступа.Следует отметить, что OAuth 2.0 и спецификации JWT полностью независимы друг от друга и не существует зависимость между друг другом.Это принесет много пользы для маркера механизма OAuth 2.0, как показано на рисунке ниже.

Независимо от JWT реализации используется, красивый веб-маркер должен храниться в месте.Cookie и HTML5 Web Storage два популярных варианта.Оба варианта являются полезными и потенциальными рисками.Обсуждение этого не входит в рамки данной статьи, но стоит читать типичные атаки, упомянутых выше: межсайтовый скриптинг атаки (XSS), посредник атаки (MITM) и запрос межсайтовое для подделки (CSRF).Okta использует сетевое хранилище HTML5.

Если вы сохранены от JWT, вы можете использовать JWT, чтобы полностью заменить идентификатор сеанса, и получить дополнительные преимущества доступа к мета-идентификатор сеанса / JWT.

Используйте маркер доступа

Чтобы включить маркеры доступа в запросе, используйте типBearerизAuthorizationЗаголовок.Вот запрос пример GET.

Как токены работают?

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

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

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

В процессе входа в систему пользователи получают криптографически безопасный одноразовый код доступа, который ограничен по времени 30 или 60 секундами, в зависимости от настроек на стороне сервера. Эти мягкие токены генерируются либо приложением-аутентификатором на устройстве, либо отправляются по запросу через SMS.

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

Когда появляются эти маркеры доступа?

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

Маркеры уровня делегирования появляются при интерактивных входах, в том числе, входах с консоли, через RunAs, PsExec с опцией “-u” и при входах на удаленный рабочий стол RDP/VNC-вида. Я уже говорил о значительном риске раскрытия парольных хешей при интерактивном входе, поэтому нам определенно нужно избегать этого типа входа в систему под нашим привилегированным аккаунтом домена.

Маркеры уровня делегирования также могут появляться в результате сетевых входов в определенные сервисы, например, SharePoint. SharePoint, который часто использует веб-сервер как фронтенд и SQL-Server как бэкенд, является превосходным примером того, насколько полезным может быть делегирование.

Она позволяет веб-серверу (фронтенду) после того, как клиент соединился с ним и прошел аутентификацию, соединяться с SQL-сервером от имени этого аутентифицированного клиента. Многозвенные решения такого типа – это обычный сценарий использования делегирования.

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

Вот снимок экрана, показывающий, где в Active Directory можно включить делегирование для определенной учетной записи пользователя:

А вот снимок экрана, показывающий, как в Active Directory можно включить делегирование для определенной учетной записи компьютера (всплывающее окно показалось после того, как я выбрал “Trust computer for delegation”):

Кража маркеров в действии

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

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

Я также предполагаю, что для эффективного анализа данного хоста должна быть использована административная учетная запись, поэтому любой административный аккаунт будет аналогично уязвим к краже (только для локального использования) маркера уровня имперсонализации.

Для просмотра и кражи маркеров доступа я собираюсь использовать утилиту incognito, созданную Люком Дженнингсом. Точнее, в данных тестах я собираюсь использовать модуль Метасплоита incognito (также созданный Дженнингсом), поскольку я обнаружил, что он является более совместимым, чем приложение incognito.

Научитесь java для oauth 2.0 маркера аутентификации

Позже, вы будете использовать OAuth 2.0 Okta достижения для создания приложения Spring загрузки.Но во-первых, вы должны убедиться, что вы понимаете, что это OAuth, что не OAuth.

Короче говоря, OAuth 2.0 «разрешено промышленным стандартом протокола» (отсайт OAuth.net )。АвторизоватьсяЗначит, что обеспечивает способ для приложений, чтобы гарантировать, что пользователи имеют право совершать действия или получить доступ к ресурсам.OAuth 2.0 Он не предоставляет инструменты для аутентификации пользователей.

Это проверка подлинности.

Существует еще один известный как РСИН или уровня протокола OpenID Connect, как правило, в паре с предоставленной OAuth аутентификации 2.0.РСИН основан на OAuth 2.0, а также предоставляет способ для проверки подлинности пользователя, как правило, заставляя их использовать имя пользователя и пароль, или используйте один из многих варианта социального входа.

помнить:

  • РСИН является аутентификация, или кто я?
  • OAuth разрешено, или, как это сделать?

Необходимые условия кражи маркеров безопасности

Итак, мы знаем, что должно произойти, чтобы маркеры уровня делегирования и имперсонализации были созданы и стали доступными для использования. Но что должно случиться, чтобы можно было ими завладеть и эксплуатировать их? Код атакующего должен быть запущен от имени пользователя, имеющего привилегию имперсонализации (SeImpersonatePrivilege). По умолчанию в Windows XP данным правом обладают администраторы, а также члены встроенной группы SERVICE:

Посмотрите на структуру jwt

То есть много первых букв.Давайте посмотрим на JWT.JWT очень застенчивый вне дикой местности.Некоторые люди могут даже сказать, что они слишком уродливые или скучно (в зависимости от ваших чувств 206 строк).

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vdHJ1c3R5YXBwLmNvbS8iLCJleHAiOjEzMDA4MTkzODAsInN1YiI6InVzZXJzLzg5ODM0NjIiLCJzY29wZSI6InNlbGYgYXBpL2J1eSJ9.43DXvhrwMGeLLlP4P4izjgsBB2yrpo82oiUPhADakLs

Так же, как и большинство вещей в жизни, пожалуйста, не судите JWT с воздухом (помните, они являются непрозрачными).Если вы посмотрите на нее, вы увидите две кубиков в строке.Они определяют различные части JWT:

  1. заголовок
  2. Полезная нагрузка / основной корпус (или требование)
  3. Пароль подписи.
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
.
eyJpc3MiOiJodHRwOi8vdHJ1c3R5YXBwLmNvbS8iLCJleHAiOjEzMDA4MTkzODAsInN1YiI6InVzZXJzLzg5ODM0NjIiLCJzY29wZSI6InNlbGYgYXBpL2J1eSJ9
.
43DXvhrwMGeLLlP4P4izjgsBB2yrpo82oiUPhADakLs

Применение jwt

Время пришло.Я знаю, что вы радыВы наконец-то увидел JWT.

Проверьте маркер подписи

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

HMACSHA256( 
    base64UrlEncode(header)   "."   
    base64UrlEncode(payload), 
    secret
)

Поймите, эта подпись не обеспечивает конфиденциальность очень важна.Эта информация общедоступна.Для того, чтобы гарантировать, что маркер не был подделан подпись, но не скрывает данные (дети могут декодировать дядя Base64 на iPhone 4).Если вы хотите отправить конфиденциальную информацию, должны быть зашифрованы JWT.

На практике обычно хранится идентификатор пользователя из зависимых пунктов формулы изобретения.Когда JWT подписан, он называется JWS.После шифрования, это называется JWE.

НеизвестныйJWT является большим преимуществом.Сервер не нужно хранить любые данные сессии.Это может быть в маркер, и передал туда и обратно между сервером приложений и все хранится.Это может показаться странным электронной игры фрисби, но гибкость этой модели хорошо (пока состояние сеанса является относительно небольшим, он должен сделать это).

Просмотр полезной нагрузки

Вторая часть маркеров являетсяполезная нагрузкаилиутверждение 。

Типы токенов авторизации

Токены авторизации различаются по типам. Рассмотрим их:

  1. Устройства, которые необходимо подключить физически. Например: ключи, диски и тому подобные. Тот, кто когда-либо использовал USB-устройство или смарт-карту для входа в систему, сталкивался с подключенным токеном.

  2. Устройства, которые находятся достаточно близко к серверу, чтобы установить с ним соединение, но оно не подключаются физически. Примером такого типа токенов может служить “magic ring” от компании Microsoft.

  3. устройства, которые могут взаимодействовать с сервером на больших расстояниях.

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

Узнайте о jwt и его роль в проверке подлинности

Рассмотрим первыйauthenticationс участиемtokenВ этом случае смысл.

АутентификацияДокажите, что пользователи, что они сказалиреальная личность 。

порядокЕсть отдельный блок информации.Это может иметь внутреннюю ценность или нет.Я покажу вам тип конкретной лексемы.Это точноИметь самоценность и решить многие проблемы с помощью идентификатора сессии.

Что такое веб-токен JSON?JWT является открытым стандартом (RFC 7519 ) Используется для использования JSON между сторонами в качестве информации маркеров передачи цифровой подписи.можешь использоватьHMACАлгоритм или использованиеRSAилиECDSAОткрытый / специальный ключ пара ихподписать 。

Другими словами: JWT является JSON маркер, который является безопасность URL, компактный и автономный струна.Как правило, они несут информацию о подтвержденном идентификаторе пользователя.Они, как правило, закодированы и зашифрованы.

Swift становится фактическим стандартом для маркеров реализации сети.средства безопасности URL, что маркер строки могут быть использованы в URL, потому что все специальные символы закодированы как простые алфавитно-цифровые символы.

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

Заключение

Мы получили важный результат. Включение опции “Account is sensitive and cannot be delegated” означает, что мы можем предотвратить ситуацию, когда маркеры доступа уровня делегирования станут доступны атакующему. В противном случае для атакующего существует явная возможность украсть маркер уровня делегирования, чтобы перемещаться по всей сети, а это может быть столь же опустошительным, как и компрометация хэшей привилегированной учетной записи.

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

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

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

Похожее:  МОЭСК личный кабинет ⚡- Россети Московский регион: передать показания

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *