Я работаю с Node, Express & Ionic над созданием системы аутентификации Azure AD.Я использую passportjs
и passport-azure-ad
Когда я пытаюсь войти в систему, используя мой бэкэнд, все работает нормально, но при звонке с фронта я получаю:
Не удалось загрузить https://login.microsoftonline.com/...: Ответ на предварительный запрос не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».Происхождение 'null', следовательно, не разрешено.
Я следовал этому уроку , чтобы установить passport
up
Вот маршруты сзади:
router.get('/auth/openid/return', passport.authenticate('azuread-openidconnect'), function(req, res, next) {
res.send(req.user);
});
router.get('/login', passport.authenticate('azuread-openidconnect'));
Вотpassport
setup:
passport.serializeUser((user, done) => {
// user et le resultat que tu as mis dans les autres done en dessous
done(null, user.id)
});
passport.deserializeUser((id, done) => {
dbConsumer.findByPrimaryId(id).then(user => {
done(null, user)
});
});
passport.use(new OIDCStrategy({
// TODO ne pas commiter ces infooooooos
clientID: "correct clientId",
clientSecret: "correct client secret",
identityMetadata: "https://login.microsoftonline.com/constellationdemo.onmicrosoft.com/v2.0/.well-known/openid-configuration",
responseType: "code",
responseMode: "query",
redirectUrl: "https://localhost:3000/azure/auth/openid/return",
passReqToCallback: false
},
function(accessToken, refreshToken, profile, done) {
// look for the user
dbConsumer.findByAzureId(profile.oid).then(user => {
if(user.rowCount > 0){
logger.log({
level: 'info',
message: profile.displayName + "already exists"
});
// On passe un user pour qu'il reconnaisse le user dans le serializer au dessus
done(null, user.rows[0]);
}
else {
dbConsumer.insertUserProvider(profile.displayName, profile.oid).then(data => {
if(data.success) {
logger.log({
level: 'info',
message: "User: " + profile.displayName + "inserted"
});
// On passe un user pour qu'il reconnaisse le user dans le serializer au dessus
done(null, data.newUser);
}
}).catch(err => {
logger.log({
level: 'error',
message: err
});
});
}
}).catch(err => {
console.log("dans l err");
console.log(err);
});
}))
Вот мой фронт-сервис:
initHeaders() {
let headers = new HttpHeaders()
.set('Access-Control-Allow-Origin', "*")
.set("Content-Type", "application/json")
.set("Access-Control-Expose-Headers", "Content-Length");
return headers;
}
logToAzure() {
return this.http.get(this.domain + 'azure/login', {headers: this.initHeaders()})
}
Когда я проверяю запрос в консоли, ни один из заголовков не устанавливается.
Я также включил Cors в задней части;
Мне нужна помощь