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.