Я настраиваю SSO в своем приложении sailsjs, используя ADFS и passport-saml, когда я пытаюсь войти в него, выбрасывая: TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["Location"]
вместо перенаправления на наши adfs (IDp)
Iпопробовал два процесса один passport-saml
(ссылка - http://www.passportjs.org/packages/passport-saml/), а другой passport-wsdef-saml2
(ссылка - https://github.com/auth0/passport-wsfed-saml2), но получаю одинаковую ошибку с обеими реализациями. Я прошел через этот URL - Руководство по реализации SAML / ADFS node.js? но в коде ничего не найдено. Я помещаю свой код реализации passport-saml здесь.
passport.js -
passport.use(new SamlStrategy({
entryPoint: 'https://myadfs.com/adfs/ls',
issuer: 'app-identity',
callbackUrl: 'https://my-app.com/login/callback',
cert: fs.readFileSync(__dirname + '/ssl/sign.crt', 'utf-8'),
authnContext:
'http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password',
identifierFormat: null
},
function(profile, done) {
console.log("data : ", profile );
var data = {
email: profile['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'],
givenname: profile['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname'],
surname: profile['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname']
}
done(null, data);
}));
route.js -
'GET /signin': 'AuthController.dologin',
'post /login/callback': 'AuthController.callback',
'/logout': 'AuthController.logout',`
AuthController.js -
`dologin: function(req, res) {
passport.authenticate('saml', (req, res) => {
res.redirect('/');
})(req, res);
},
callback: [passport.authenticate('saml', {failureRedirect: '/',failureFlash: true}), function(req, res) {
console.log(req.body);
console.log(req.user);
if (!req.user) {
throw Error('User not authenticated.');
}
res.redirect('/');
}
],
logout: function(req, res) {
req.logout();
res.redirect('/login');
}
http.js -
passportInit: require('passport').initialize(),
passportSession: require('passport').session(),
order: [
'cookieParser',
'session',
'passportInit',
'passportSession',
'bodyParser',
'compress',
'poweredBy',
'router',
'www',
'favicon',
],
Пожалуйста, помогите мне, яЗастрял даже не смог найти, где проблема на самом деле. Согласно учебникам и выводам, ничего не кажется неправильным, но все же, это не перенаправление на сервер поставщика удостоверений ADFS, и выдает следующую ошибку -
0|app | TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["Location"]
0|app | at ServerResponse.setHeader (_http_outgoing.js:473:3)
0|app | at Strategy.strategy.redirect (app/node_modules/passport/lib/middleware/authenticate.js:323:13)
0|app | at redirectIfSuccess (app/node_modules/passport-saml/lib/passport-saml/strategy.js:77:12)
0|app | at DeflateRaw.requestToUrlHelper [as cb] (app/node_modules/passport-saml/lib/passport-saml/saml.js:361:5)
0|app | at DeflateRaw.zlibBufferOnEnd (zlib.js:131:10)
0|app | at DeflateRaw.emit (events.js:203:15)
0|app | at endReadableNT (_stream_readable.js:1129:12)
0|app | at process._tickCallback (internal/process/next_tick.js:63:19)
Пожалуйста, помогите мне, что делать, где может быть проблема с кодом выше.
Заранее спасибо.