Node.js passport-saml一直redirect到localhost:3000 / login / callback

我正在使用来自www.npmjs.org/package/passport-saml的SAML教程。 我是SAML的初学者。

教程说

SAML身份提供商会将您redirect到pathconfiguration提供的URL

我已经有一个OpenIdp帐户。 似乎我可以成功login,但redirectURL总是把我发送到localhost:3000 / login / callback ,因为我把'path'改为'/ users / login-user-db-saml'' www.passporttoken.com:1234/users/login-user-db-saml' (两者都不起作用,仍然将我发送到默认login/回叫 )。

我有下面的代码。 我做错了什么?

/**start FOR SAML**/ passport.use(new SamlStrategy( { path: '/users/login-user-db-saml', entryPoint: 'https://openidp.feide.no/simplesaml/saml2/idp/SSOService.php', issuer: 'passport-saml' }, function(profile, done) { findByEmail(profile.email, function(err, user) { if (err) { return done(err); } return done(null, user); }); }) ); app.post('/users/login-user-db-sam', passport.authenticate('saml', { failureRedirect: '/users/login-user-saml', failureFlash: true }), function(req, res) { res.redirect('/'); } ); app.get('/users/login-user-saml', passport.authenticate('saml', { failureRedirect: '/users/login-user-saml', failureFlash: true }), function(req, res) { res.redirect('/'); } ); /**End for SAML**/ 

我从SAMLconfiguration中删除了“path”,而是使用了一个“callbackUrl”和指定的callback的完整path。 我还设置了“发行人”,如下所示:

  saml : { entryPoint : 'https://openidp.feide.no/simplesaml/saml2/idp/SSOService.php', issuer : 'http://192.168.56.101:3000', callbackUrl : 'http://192.168.56.101:3000/login/callback' } 

您还应在元数据configuration页面上的OpenIdP上configuration您的SAML SP: https ://openidp.feide.no/simplesaml/module.php/metaedit/edit.php – 将SAML 2.0选项卡上的AssertionConsumerServiceURL设置为您的callbackUrl,并将entityID设置为上面的“发行者”。

你有没有考虑让你的SAMLlogin路由POST请求?

SAML希望它成为POST

问题在于你的战略configuration; 特别是发行人。 你的configuration指向实体'passport-saml',它被configuration成is。 定义你自己的实体并创build你需要的设置。