来自多个身份提供商的Node.js Passport SAML

Ale*_*lex 4 node.js saml-2.0 passport.js

我已经将Passport-SAML实施到我的网站中,现在我的任务是将我们的网站与另外两个身份提供商连接起来.在我的代码中,它似乎只使用SamlStrategy的最新定义.如何设置Passport以允许同一策略的多个不同实现?

我的实现看起来像这样:

passport.use(new SamlStrategy(
    {
        path: '/saml',
        entryPoint: "https://idp.identityprovider.net/idp/profile/SAML2/Redirect/SSO",
        issuer: 'https://www.serviceprovider.com/saml',
        identifierFormat: 'urn:domain:safemls:nameid-format:loginid'
    },
    function(profile, done) {
        console.log("SamlStrategy done", profile)
        User.findOne({email:profile.Email}, function(err, user) {
            if (err) {
                return done(err);
            }
            if(!user) return done(null, false, {message: 'No account associated with this email.'})
            return done(null, user);
        });
    }
));
Run Code Online (Sandbox Code Playgroud)

wol*_*ski 9

您可以为每个策略命名

passport.use('config1', new SamlStrategy(..), callback);
passport.use('config2', new SamlStrategy(..), callback);
Run Code Online (Sandbox Code Playgroud)

然后

app.post('/login/callback',
  function(req, res) {
      var config = // extract config name somehow
      passport.authenticate(config, { failureRedirect: '/', failureFlash: true })();
  }
  function(req, res) {
    res.redirect('/');
  }
);
Run Code Online (Sandbox Code Playgroud)

  • 如果我们将配置数据存储在数据库中,用户可以在启动快速服务器后进行设置,该怎么办?如何在不重启Express服务器的情况下在内存中实例化新的saml策略?我已经看过这个https://www.npmjs.com/package/passports,但还没有真正尝试过.只是好奇你是否遇到了这个问题 (5认同)
  • 要动态设置多个 SAML 策略,请尝试 [`MultiSamlStrategy`](https://github.com/bergie/passport-saml#configure-strategy-for-multiple-providers) (2认同)