MCPcopy Index your code
hub / github.com/Ysheep666/passport-cas

github.com/Ysheep666/passport-cas @0.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.1.0 ↗ · + Follow
3 symbols 4 edges 1 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
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

Core symbols most depended-on inside this repo

verified
called by 9
index.js
Strategy
called by 0
index.js
_handleResponse
called by 0
index.js

Shape

Function 3

Languages

TypeScript100%

Modules by API surface

index.js3 symbols

For agents

$ claude mcp add passport-cas \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page