7

Passport-SAMLを自分のサイトに実装したので、サイトを他の 2 つの ID プロバイダーに接続することになりました。私のコードでは、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);
        });
    }
));
4

2 に答える 2

12

各戦略に名前を付けることができます

passport.use('config1', new SamlStrategy(..), callback);
passport.use('config2', new SamlStrategy(..), callback);

その後

app.post('/login/callback',
  function(req, res) {
      var config = // extract config name somehow
      passport.authenticate(config, { failureRedirect: '/', failureFlash: true })();
  }
  function(req, res) {
    res.redirect('/');
  }
);
于 2013-08-10T19:57:20.550 に答える