使用OneLogin实现Node.js SAML

使用OneLogin实现Node.js SAML,node.js,saml,onelogin,passport-saml,Node.js,Saml,Onelogin,Passport Saml,我希望在OneLogin的应用程序目录中设置我们的应用程序,因此我需要创建一个SAML集成,据我所知。我确实看到他们有用于此的工具包,但我在Node.js中工作,没有用于该环境的工具包 我一直在阅读他们的文档以及其他帖子,并认为过程如下所示: 1) 请求OneLogin创建应用程序并将其添加到其目录中。 2) 我的应用程序需要有一个路由点,我将提供给OneLogin,当有人单击我们应用程序的图标时,它将用作重定向。 3) 用户单击目录中“我的应用”的图标将标记该用户,并将其发送到我定义的路由点,

我希望在OneLogin的应用程序目录中设置我们的应用程序,因此我需要创建一个SAML集成,据我所知。我确实看到他们有用于此的工具包,但我在Node.js中工作,没有用于该环境的工具包

我一直在阅读他们的文档以及其他帖子,并认为过程如下所示: 1) 请求OneLogin创建应用程序并将其添加到其目录中。 2) 我的应用程序需要有一个路由点,我将提供给OneLogin,当有人单击我们应用程序的图标时,它将用作重定向。 3) 用户单击目录中“我的应用”的图标将标记该用户,并将其发送到我定义的路由点,其中包含作为SAML请求/XML传递的信息。 4) 我的路由点需要使用SAML请求/XML,然后执行我的内部登录过程。OneLogin传递给我的路由点的信息将包括我的站点的必要信息,如名字、姓氏和电子邮件地址。然后,我将使用这些信息执行我的内部应用程序,如果它对现有用户进行验证,我会将其视为成功登录,然后让他们继续。如果他们不是现有用户,我会通过用户创建类型表单发送他们,但可以从OneLogin的SAML请求/XML中获取默认信息,也可以自动创建用户

看起来我对这个过程有很高的理解吗

有人在Node.js中有例子吗


我打算用passport SAML软件包。

是的,你走对了

Passport SAML适用于Express应用程序

您的Passport SAML策略配置应该如下所示

passport.use(new SamlStrategy(
  {
    path: '/login/callback',
    entryPoint: 'https://{SUBDOMAIN}.onelogin.com/trust/saml2/http-redirect/sso/{APP_ID}',
    issuer: 'passport-saml'
  },
  function(profile, done) {
    console.log(profile);
    return done(null, profile);
  })
);

passport.serializeUser(function(user, done) {
  done(null, user);
});

passport.deserializeUser(function(obj, done) {
  done(null, obj);
});
确保使用通过OneLogin门户配置应用程序时提供的SLO端点

然后设置使用Passport的路线

// Initiates an authentication request with OneLogin
// The user will be redirect to OneLogin and once authenticated
// they will be returned to the callback handler below
app.get('/login', passport.authenticate('saml', {
  successReturnToOrRedirect: "/"
}));

// Callback handler that OneLogin will redirect back to
// after successfully authenticating the user
app.post('/login/callback', passport.authenticate('saml', {
  callback: true,
  successReturnToOrRedirect: '/users',
  failureRedirect: '/'
}))
您还需要确保已将ACS(消费者)URL设置为您的应用程序回调URL,并且您正在测试的用户有权访问该应用程序