Я сталкиваюсь с проблемой при использовании библиотеки passport-azure-ad
, когда библиотека выдает ошибку при попытке проверить id_token
.Конкретное сообщение об ошибке: "authentication failed due to: In _validateResponse: failed to generate PEM key due to: a key with kid %s cannot be found"
Я вижу, что kid
в заголовке id_token
- это значение, которое не отображается в конечной точке обнаружения ключей (в формате https://login.microsoftonline.com/{tenantId}/discovery/v2.0/keys
)..
Есть ли причина, по которой это может произойти?Я не могу понять это.
Мой код следующий:
passport.use(
new OIDCStrategy({
clientID: CLIENT_ID,
clientSecret: CLIENT_SECRET,
identityMetadata: IDENTITY_METADATA_URL,
redirectUrl: SUCCESS_REDIRECT_URI,
responseMode: 'form_post',
responseType: 'code',
scope: 'email profile',
loggingLevel: 'info',
loggingNoPII: false
})
)
app.get(
'/oauthv2/login',
passport.authenticate(
'azuread-openidconnect',
{ failureRedirect: '/fail' },
(req, res) => {
// ...
}
)
)
app.post(
'/oauthv2/success',
passport.authenticate(
'azuread-openidconnect',
{ failureRedirect: '/' },
(req, res) => {
// ...
}
)
)
Из журналов pazzport-azure-ad
я вижу, что до возникновения ошибки выполняются следующие шаги:
- получено id_token
- получено access_token
- получено refresh_token
- декодированный токен
- работает с ключом
- работа с ключом
- работа с ключом
- проверка подлинности не удалась из-за: В _validateResponse: не удалось сгенерировать ключ PEM из-за: ключ с ребенком% s не найден