Я пытаюсь использовать паспорт-лазурное объявление для аутентификации пользователя. Приложение отображает общий экран входа в систему, но при нажатии кнопки «Вход» окно браузера становится пустым и показывает счетчик, указывающий на его работу. Тем временем мой сервер получает непрерывный поток POST-запросов к моей конечной точке обратного вызова.Проблема с использованием паспортно-лазурного объявления OIDCStrategy with Passportjs
За это время ни одна из моих функций паспорта (проверка, serializeUser и deserializeUser) не вызвана.
вот мое определение стратегии:
passport.use("azure", new azureStrategy({
identityMetadata: 'https://login.microsoftonline.com/common/.well-known/openid-configuration',
clientID: "*************************",
responseType: 'code id_token',
issuer: "https://sts.windows.net/********************/",
responseMode: 'form_post',
redirectUrl: "http://localhost:5055/auth/azure/callback",
allowHttpForRedirectUrl: true,
clientSecret: "**********************************"
}, function(iss, sub, profile, accessToken, refreshToken, done) {
console.log("ID TOken: ", profile.oid); //Never gets called
console.log("User" ,profile) //Never gets called
done(null, profile);
}));
passport.serializeUser(function(user, done){
console.log("serialize: ", user) //Never gets called
done(null, user);
})
passport.deserializeUser((user, done) => {
console.log("deserialize: ", user) //never gets called
done(null, user);
})
А вот мои определения маршрута:
app.get("/auth/azure", passport.authenticate('azure', {failureRedirect: '/'}))
app.post("/auth/azure/callback",
(req, res, next) => {
console.log("POST Callback Received!");
next();
},
passport.authenticate("azure", {
failureRedirect: "/error.html"
}),
(req, res) => {
console.log("Recieved POST callback")
res.redirect("/user")
})
Несколько вещей, говоря:
- Я разрабатываю приложение для моей организации, поэтому он должен только аутентифицировать пользователей в нашей AD.
- Первоначально я попытался использовать версию identityMetadata , но получил ошибку в отношении того, что приложение не поддерживается для версии API. Использование общего, похоже, разрешило эту проблему.
- Как уже упоминалось выше, код
console.log()
в serializeUser, deserializeUser и обратный вызов проверки никогда не вызываются.
Консоль окно на моем сервере nodejs просто показывает, что это:
Request at: 1477083649230 GET/{}
Request at: 1477083649235 GET /login.html {}
Request at: 1477084498737 GET /auth/azure {}
Request at: 1477085275630 POST /auth/azure/callback {}
POST Callback Received!
Request at: 1477085275980 POST /auth/azure/callback {}
POST Callback Received!
Request at: 1477085276335 POST /auth/azure/callback {}
POST Callback Received!
Request at: 1477085276679 POST /auth/azure/callback {}
POST Callback Received!
Request at: 1477085277042 POST /auth/azure/callback {}
POST Callback Received!
Вы можете видеть, что это только продолжается, пока я не убью эту сессию или перейдите на другую страницу на сайте. Также обратите внимание, что, хотя журнал POST Callback сделан, журнал, который имеет место после аутентификации, никогда не делает.
Любая помощь была бы принята с благодарностью.
Не должен быть ваш второй вызов промежуточного программного обеспечения 'passport.authenticate (" azure ", {...})' –
Да, извините, это было остатками от чего-то другого. Я очистил образец кода так, как он должен быть. – RHarris
Хорошо. А что такое 'azureStragegy'? Я не могу найти в документах (https://github.com/AzureAD/passport-azure-ad) –