Node.js的护照SAML重定向到本地主机:3000 /登录/回调所有的时间(Node.js pa

2019-10-19 09:42发布

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

该教程说

该SAML身份提供商将您重定向到该路径配置所提供的网址

我已经有一个OpenIdp帐户。 看来我可以成功登录,但重定向URL总是送我到localhost:3000 /登录/回调 ,因为我改成“/用户/登录用户-DB-SAML”'“路”,这是不存在在我的代码www.passporttoken.com:1234/users/login-user-db-saml”(既没有工作,还是把我送到默认的登录/回调 )。

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

/**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**/

Answer 1:

我删除从SAML配置中的“路径”,而是使用了“callbackUrl”的完整路径,以指定的回调。 我还设置“发行人”,如下图所示:

    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' 
    }

你也应该在OpenIdP元数据配置页上配置SAML SP: https://openidp.feide.no/simplesaml/module.php/metaedit/edit.php -设置SAML 2.0选项卡上的AssertionConsumerServiceURL是你callbackUrl,并设置ENTITYID为上述“发行者”。



Answer 2:

你有没有考虑过让你的SAML登录路线POST请求?

SAML希望它是POST



Answer 3:

问题出在你的策略配置; 特别是发行人。 配置点到实体“护照SAML”,其被配置为是。 定义你自己的实体,并创建你所需要的设置。



文章来源: Node.js passport-saml redirects to localhost:3000/login/callback all the time