我有一个简单的节点应用程序,它使用带有数据库的护照进行身份验证。
passport.use(new localStrategy({ usernameField: 'email' }, authenticateUser));
我想添加使用 SAML (SSO) 通过第三部分 IDP 进行身份验证的选项。
所以我在想的是,如果用户选择 SSO,输入他们所在的公司名称,那么我的代码将查找该公司的 SSO 配置并使用它加载护照。
如果用户未选择 SSO,则使用本地数据库对信息进行身份验证。
这可能吗?如果是,我应该如何加载策略。
passport.use(new MultiSamlStrategy(
{
passReqToCallback: true, //makes req available in callback
getSamlOptions: function(request, done) {
findProvider(request, function(err, provider) {
if (err) {
return done(err);
}
return done(null, provider.configuration);
});
}
},
function(req, profile, done) {
findByEmail(profile.email, function(err, user) {
if (err) {
return done(err);
}
return done(null, user);
});
})
);