Перейти к содержимому
ecdsa.com
jsonwebtoken (Node.js)Библиотеки JWT

Сообщение об ошибке

jwt audience invalid. expected: <audience>

Вместо заполнителя подставляется значение из ваших настроек, например «jwt audience invalid. expected: api://orders».

Что это означает

Криптографическую проверку токен прошёл, но его утверждение aud не совпадает с аудиторией, которую требует проверяющая сторона. Проверка аудитории нужна, чтобы токен, выпущенный для одного API, нельзя было повторно предъявить другому: подпись доказывает, кто выпустил токен, а aud — для какого сервиса он выпущен, и обе проверки должны пройти, прежде чем утверждениям можно доверять.

Почему это происходит

Как исправить

  1. 1.

    Сравните то, что есть в токене, с тем, что вы ожидаете

    Выведите оба значения. Исправьте то, которое неверно: настройку аудитории у проверяющей стороны или параметр audience/resource, который клиент передаёт при запросе токена.

    js
    const { aud } = jwt.decode(token);
    console.log("token aud:", aud);           // e.g. "api://orders" or ["api://orders"]
    jwt.verify(token, key, {
      algorithms: ["ES256"],
      audience: "api://orders",              // must match exactly (string, array or RegExp)
    });
  2. 2.

    Явно разрешите допустимые варианты

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

    js
    jwt.verify(token, key, {
      algorithms: ["ES256"],
      audience: ["api://orders", "https://api.example.com"],
    });

Связанные ошибки

Открыть всю базу ошибок подписей