首页 > 解决方案 > 一本护照中的 Nodejs 本地和 SSO

问题描述

我有一个简单的节点应用程序,它使用带有数据库的护照进行身份验证。

    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);
    });
  })
);

标签: node.jspassport.jspassport-saml

解决方案


推荐阅读