重定向localhost而不是myserver.org:3000/login/callback

redirect localhost instead of myserver.org:3000/login/callback

本文关键字:3000 login callback org myserver localhost 重定向      更新时间:2023-09-26

一直被重定向到我的localhost-server,而不是

myserver.org: 3000/登录/回调

localhost: 3000/登录/回调

不明白为什么和从哪里

这里是我的代码的一部分:
app.get('/', function(req, res){
  res.render('index', { user: req.user });
});
app.get('/account', ensureAuthenticated, function(req, res){
  res.render('account', { user: req.user });
});

app.get('/login',
  passport.authenticate('saml', { failureRedirect: '/', failureFlash: true }),
  function(req, res) {
        console.log('so far worked out - =) 2');
    res.redirect('/');
  }
);
        console.log('so far worked out - =) 1');
app.post('/login/callback',
  passport.authenticate('saml', { failureRedirect: '/', failureFlash: true }),
  function(req, res) {
        console.log('so far worked out - =) 3');
//    res.redirect('');
        res.render('index', { user: req.user });
  }
);
app.get('/Metadata', // <--- also doesn't work 
        function(req,res){
console.log(SAML.prototype.validatePostResponse);
        console.log('so far worked out - =) 4');
        req.type('application/xml');
        res.send(200, samlStrategy.generateServiceProviderMetadata(cert));
    }
);

不获取元数据…除了console.log('so fa... 1')

,它不会打印任何console.log('so fa...')

希望有人能看到这个问题,提前谢谢你…;)

我找到了我的问题…

我完全使用了示例提供的内容,其中包括Feide OpenIdP和以下代码

issuer: 'passport-saml'

发行者是应用程序请求身份验证的标识(在本例中)Feide OpenIdP。"passport-saml"是在Feide的OpenIdP网络上预先注册的实体,其中预定义了一个重定向链接,返回到localhost:3000

您需要做的是在Feide OpenIdP上注册您自己的实体条目,并将代码中的"发行者"更改为您注册的实体名称。这个应该可以解决问题。

另请注意:我有我的重定向url硬编码在Feide OpenIdP实体…我不确定如果您没有在实体中指定重定向URL, Feide OpenIdP将如何反应。也许它会重定向到您在护照中配置的任何内容。use(new SamlStrategy()) call.

另见Node.js passport-saml一直重定向到localhost:3000/login/callback,我基本上做了上面建议的相同的事情,但提供了我使用的示例。