passport-azure-ad: Почему я получаю "недействительная аудитория"?

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

Мой клиент находится по адресу acme.co.uk, но я хочу, чтобы веб-приложение, которое я развернул по адресу https://subdomain.acme2.co.uk/ делегировало аутентификацию пользователей в Azure AD.

Я зарегистрировал свое приложение, как показано ниже, на новом портале: (Имена полей - те, которые используются на портале Azure).

Идентификатор приложения URL: https://acme.co.uk/11111111-2222-3333-4444-555555555555

URL домашней страницы: https://subdomain.acme2.co.uk/api/auth/aad

URL ответов: https://subdomain.acme2.co.uk/api/auth/aad/callback

и создал секретный ключ, срок действия которого не истекает со значением: '111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaa='

Я следил за образцом passport-azure-ad github, используя конечную точку v1 в качестве руководства.

{
  allowHttpForRedirectUrl: false,
  clientID: 'https://acme.co.uk/11111111-2222-3333-4444-555555555555',
  clientSecret: '111111111111111111/aaaaaaaaaaaaaaaaaaaaaaaa=',
  identityMetadata: 'https://login.microsoftonline.com/acme.co.uk/.well-known/openid-configuration',
  isB2C: false,
  issuer: null,
  loggingLevel: 'info',
  passReqToCallback: false,
  redirectUrl: 'https://subdomain.acme2.co.uk/api/auth/aad/callback',
  responseMode: 'form_post',
  responseType: 'code id_token',
  skipUserProfile: true,
  useCookieInsteadOfSession: false,
  validateIssuer: true
}

Когда я попал на страницу " https://subdomain.acme2.co.uk/api/auth/aad " в моем браузере, меня перенаправили на MS для входа в систему, что я и сделал, но когда перенаправил обратно на " https://subdomain.acme2.co.uk/api/auth/aad/callback 'происходит, я не аутентифицирован.

Осматривая заголовки из запроса POST обратного вызова, я вижу:

In _validateResponse: jwt audience is invalid. expected: https://acme.co.uk/11111111-2222-3333-4444-555555555555,spn:https://acme.co.uk/11111111-2222-3333-4444-555555555555

Есть идеи, что я сделал не так??? [: - |

(Кроме того, отладка - это боль, так как я работаю в докере, и перенаправления, кажется, не работают должным образом, поэтому мне приходится развертываться в реальном окружении ATM).

1 ответ

Решение

Хорошо, нашел его... clientID: " https://acme.co.uk/11111111-2222-3333-4444-555555555555" был виновником.

Это должно быть приложение, а не URI идентификатора приложения. Doh. Большое спасибо @Alex Blex за руководство. Это было очень полезно.

В моем случае я использовал.env и получал оттуда clientId.

Я решил эту проблему, убрав кавычки вокруг clientID в моей конфигурации и файле.env.

Другие вопросы по тегам