JSPM

passport-cas

0.1.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 848
  • Score
    100M100P100Q102751F
  • License MIT

Cas authentication strategies for Passport.

Package Exports

  • passport-cas

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (passport-cas) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

passport-cas

Cas authentication strategies for Passport.

Install

$ npm install passport-cas

Configure Strategy

passport.use(new (require('passport-cas').Strategy)({
  ssoBaseURL: 'http://www.example.com/',
  serverBaseURL: 'http://localhost:3000'
}, function(login, done) {
  User.findOne({login: login}, function (err, user) {
    if (err) {
      return done(err);
    }
    if (!user) {
      return done(null, false, {message: 'Unknown user'});
    }
    return done(null, user);
  });
}));

Authenticate Requests

passport.authenticate('cas', function (err, user, info) {
  if (err) {
    return next(err);
  }

  if (!user) {
    req.session.messages = info.message;
    return res.redirect('/');
  }

  req.logIn(user, function (err) {
    if (err) {
      return next(err);
    }

    req.session.messages = '';
    return res.redirect('/');
  });
})

For example:

// GET: '/cas_login'
exports.casLogin = function(req, res, next) {
  passport.authenticate('cas', function (err, user, info) {
    if (err) {
      return next(err);
    }

    if (!user) {
      req.session.messages = info.message;
      return res.redirect('/');
    }

    req.logIn(user, function (err) {
      if (err) {
        return next(err);
      }

      req.session.messages = '';
      return res.redirect('/');
    });
  })(req, res, next);
};

CAS versions

CAS 3.0 configuration

Since CAS3.0, the validation service returns a list of attributes for the authenticated user. Here is how you can use them:

passport.use(new (require('passport-cas').Strategy)({
  version: 'CAS3.0',
  ssoBaseURL: 'http://www.example.com/',
  serverBaseURL: 'http://localhost:3000'
}, function(profile, done) {
  var login = profile.user;

  User.findOne({login: login}, function (err, user) {
    if (err) {
      return done(err);
    }
    if (!user) {
      return done(null, false, {message: 'Unknown user'});
    }
    user.attributes = profile.attributes;
    return done(null, user);
  });
}));

CAS 2.0 configuration

CAS 2.0 will work with the CAS 3.0 configuration, but you need to set the validation endpoint.

passport.use(new (require('passport-cas').Strategy)({
  version: 'CAS3.0',
  ssoBaseURL: 'http://www.example.com/',
  serverBaseURL: 'http://localhost:3000/cas',
  validateURL: '/serviceValidate'
}, function(profile, done) {
  var login = profile.user;

  User.findOne({login: login}, function (err, user) {
    if (err) {
      return done(err);
    }
    if (!user) {
      return done(null, false, {message: 'Unknown user'});
    }
    return done(null, user);
  });
}));

License

The MIT License