护照Saml循环

我试图在nodejs / angularjs项目中使用Passport-Saml.js进行ADFS身份validation。

  1. 当我连接到我的网站时,我被正确地redirect到我的ADFS门户。
  2. ADFS门户,authentication后正确redirect到callback。
  3. 然后是callback循环。

Chrome控制台正在循环播放

那我的路线(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',function(err,user,info)停止工作(因为在输出消息之前可以在控制台中看到,但是在屏幕截图中看不到“好”

和我的护照configuration(/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'], // eg if you added a Group claim group: profile['http://schemas.xmlsoap.org/claims/Group'] }); } )); module.exports = passport; 

我怀疑我的设置可能不正确,但有没有任何Passport-Saml的详细日志,以缩小我的故障排除。

也许是这个问题: 检查这个错误

只需添加body-parser

 var bodyParser = require('body-parser'); ... app.use(bodyParser.urlencoded({extended: true})); 

它为我工作。 也许它可以帮助别人…