Инструменты разработчика · Декодер JWT
Токен ID против токена доступа: почему OpenID Connect JWT не является ключом API
· Фон
JWT клятва аутентификация
Оба могут быть JWT от одного и того же поставщика, но отвечают на разные вопросы. В этом посте объясняется, что содержат токен идентификатора и токен доступа, кто должен их использовать и как отличить их путем декодирования.
API отклоняет токен, который выглядит совершенно действительным, поскольку он никогда не предназначался для API.
API может отклонить правильно сформированный, правильно подписанный токен, поскольку эти учетные данные были выданы для другого потребителя и цели. «Это JWT» описывает возможный формат, а не разрешение на отправку его повсюду. Токены идентификатора и токены доступа отвечают на разные вопросы в потоке идентификации.
ToolAcre может предоставлять шаблоны заголовков и полезных данных, которые поддерживают отладку, но не может аутентифицировать токен или проверять профиль OpenID Connect. Окончательная классификация должна основываться на контракте с поставщиком, потоке выдачи и достоверном результате проверки, а не на визуальном осмотре.
Заявления об идентификационных токенах могут предполагать использование идентификационных данных; этот универсальный декодер не проверяет профиль OpenID Connect
Токен идентификатора передает информацию аутентификации клиенту, запросившему вход. В зависимости от профиля видимые утверждения могут включать в себя одноразовый номер, время аутентификации, методы аутентификации или хэш, связанный с другим токеном. Эти поля не являются общими разрешениями авторизации API.
Декодер рассматривает `auth_time` как поле, имеющее форму времени, и отображает другие имена как зависящие от приложения, если они не входят в число его семи основных. Он не проверяет nonce, `at_hash`, `amr` или семантику клиентской аудитории. Читаемые полезные данные удостоверения остаются недоверенными до тех пор, пока клиент не проверит их правильно.
Токены доступа могут быть JWT или непрозрачными; к этому декодеру подходят только трехчастные JWT
Токен доступа авторизует вызовы к серверу ресурсов в системе авторизации. Это может быть JWT или непрозрачная строка. Только фигура со знаком, состоящая из трех частей, соответствует маршруту ToolAcre; непрозрачный токен не имеет общей структуры на стороне клиента для декодирования, и его не следует принудительно принудительно использовать с помощью этого инструмента.
Токен доступа JWT может содержать информацию об аудитории и области действия, но эти значения требуют аутентифицированной проверки и политики ресурсов. Панель браузера не реализует сервер ресурсов и не может определить, разрешает ли область определенную операцию.
Токены обновления — обычно непрозрачные, никогда не предназначенные для декодирования и никогда не отправляемые в API.
Токен обновления поддерживает получение замещающих учетных данных доступа в соответствии с правилами поставщика. Обычно он непрозрачен и не предназначен для API ресурсов. Это также ценные учетные данные, поэтому вставка их в декодер создает риск без надежной диагностической пользы.
Не делайте вывод, что каждое значение в форме токена должно быть декодировано. Используйте инструменты поставщика и контролируемые журналы для предотвращения сбоев обновления. Явное предупреждение ToolAcre относительно производственных токенов здесь применяется с особой силой, а его трехсегментный анализатор не выполняет операцию обновления.
Аудитории различаются: идентификатор клиента в токене идентификатора и ресурс в токене доступа.
Аудитория — важный ключ к разгадке, поскольку предполагаемый потребитель отличается. Токен идентификатора часто нацелен на клиента, тогда как токен доступа нацелен на ресурс. Точные идентификаторы и представления зависят от поставщика и профиля, поэтому в этой статье не предлагается универсальный строковый шаблон.
Заголовок `typ` также может содержать явную метку, но до проверки он остается данными, управляемыми токеном. ToolAcre выдает предупреждение только в том случае, если строка `typ` отличается от `JWT`; он не распознает каждую метку профиля и не превращает ее в решение об авторизации.
Рабочий пример: сравнивайте видимые поля, не рассматривая их как доказательство типа токена.
Расшифруйте два синтетических примера: один содержит утверждения аутентификации, ориентированные на клиента, а другой — аудиторию и область действия ресурса. Запишите различия в `aud`, `typ` и именах полезных данных. Это упражнение учит тому, что спрашивать у эмитента, а не тому, как доказать идентичность того или иного экземпляра.
Изготовленный токен может копировать одни и те же метки, а реальный токен может использовать соглашения, специфичные для поставщика. Подтвердите тип из ответа на выдачу и документации, а затем проверьте его у предполагаемого потребителя. Выходные данные декодера — это подтверждающие доказательства, а не решающий орган.
Что здесь не распространяется — потоки OAuth, выдающие эти токены, это отдельная тема.
Это сравнение не объясняет код авторизации, устройство или другие потоки, которые выдают токены. Он также не охватывает этапы проверки, специфичные для поставщика, непрозрачный самоанализ токенов доступа или ротацию обновлений. Эти предметы зависят от выбранной экосистемы и ее развертывания.
Сохраняйте узкий вопрос непосредственной отладки: какие учетные данные получил клиент, кто является его предполагаемым потребителем и какой доверенный компонент проверяет его? Ответ на эти три вопроса не позволит общей фигуре JWT стереть роли протокола.
Вывод: посмотрите на aud и наберите текст перед отправкой — декодер ToolAcre JWT позволяет вам проверить, какой тип токена вы держите.
Посмотрите на аудиторию и введите текст перед отправкой токена, но не доверяйте ни одному из полей, пока проверка не завершится успешно. Идентификационный токен принадлежит границе проверки клиента; токен доступа принадлежит его ресурсному серверу. Токен обновления принадлежит процессу обновления поставщика, а не API.
ToolAcre помогает читать безопасные примеры из трех частей и не претендует на их классификацию или проверку. Используйте его, чтобы обнаружить вероятные ошибки, а затем позвольте документированному потоку и независимо настроенному верификатору установить реальную цель учетных данных.