我正在尝试在nodejs / angularjs项目中使用Passport-Saml.js进行ADFS识别。
Chrome console when it's looping
我的路线(server.js):
app.post('/login/callback',
function (req, res, next) {
console.log('before');
passport.authenticate('saml', function (err, user, info){
console.log('good');
})(req, res, next);
});
我认为它停止在passport.authenticate('saml',函数(错误,用户,信息)}工作{因为“之前”输出消息可以在控制台中看到,但也不是屏幕截图中看到的“好”。 The console
我的护照配置(/config/passport.js):
var
fs = require('fs')
, passport = require('passport')
, SamlStrategy = require('passport-saml').Strategy
;
passport.serializeUser(function (user, done) {
done(null, user);
});
passport.deserializeUser(function (user, done) {
done(null, user);
});
passport.use(new SamlStrategy(
{
entryPoint: 'https://logon.XXX.com/adfs/ls/',
issuer: 'urn:backpack-test',
callbackUrl: ' https://backpack-test.XXX.com/login/callback',
cert: 'MIIC6D...,
authnContext: 'http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password',
//acceptedClockSkewMs: -1,
identifierFormat: null,
//signatureAlgorithm: 'sha256'
},
function (profile, done) {
return done(null,
{
upn: profile['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn'],
// e.g. if you added a Group claim
group: profile['http://schemas.xmlsoap.org/claims/Group']
});
}
));
module.exports = passport;
我怀疑我的设置可能不正确但是有任何详细的护照日志 - Saml以缩小我的故障排除。
答案 0 :(得分:5)
可能是这个问题: Check this bug
只需添加正文解析器
即可var bodyParser = require('body-parser');
...
app.use(bodyParser.urlencoded({extended: true}));
它对我有用。也许它可以帮助别人......
答案 1 :(得分:0)
感谢英仙座,我只添加了一个注释。我正在使用:
var bodyParser = require('body-parser');
app.use(bodyParser.json({limit: '5mb'}));
,我认为这已经足够了,但事实并非如此,因为正文解析器忽略了经过urlencoded的请求。所以我必须同时指定:
var bodyParser = require('body-parser');
app.use(bodyParser.json({limit: '5mb'}));
app.use(bodyParser.urlencoded({extended: true}));