首先,什么是 SSO (单点登录)?
SSO 是一种身份验证机制,允许用户在多个应用程序之间无缝跳转,而无需在每个应用程序中重复输入凭据。
让我们来看看如何使用 Node.js 实现标准 SSO:
使用 Passport.js 和 passport-sso 中间件。Passport.js 是一个身份验证中间件,而 passport-sso 是一个专门用于 SSO 的 Passport 策略。
在应用程序中配置 passport-sso 策略。
const passport = require('passport');
const SSOStrategy = require('passport-sso').Strategy;
passport.use(new SSOStrategy({
callbackURL: '/auth/sso/callback',
issuer: 'https://your-sso-issuer.com',
clientID: 'your-client-id',
clientSecret: 'your-client-secret',
passReqToCallback: true
}, (req, issuer, userInfo, done) => {
// Find or create the user based on userInfo
User.findOrCreate({ ssoId: userInfo.sub }, (err, user) => {
if (err) { return done(err); }
return done(null, user);
});
}));