我正在使用 www.npmjs.org/package/passport-saml 中的 SAML 教程。我是 SAML 的初学者。
教程说
The SAML identity provider will redirect you to the URL provided by the path configuration
我已经有一个 OpenIdp 帐户。看来我可以成功登录,但重定向 URL 总是将我发送到 localhost:3000/login/callback ,这在我的代码中不存在,因为我将 'path' 更改为'/users/login-user-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**/
最佳答案
我从 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 设置为您的回调 Url,并将实体 ID 设置为上面的“颁发者”。
关于Node.js Passport-saml 重定向到 localhost :3000/login/callback all the time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21870767/