# passport-cas

> Cas authentication strategies for Passport.

Latest version **0.1.1** (published 2017-03-05) · MIT license · 0 weekly downloads

## Install

```sh
npm install passport-cas
pnpm add passport-cas
yarn add passport-cas
bun add passport-cas
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.1 |
| Published | 2017-03-05 |
| First published | 2014-01-09 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Known vulnerabilities | 0 (+4 in 3 direct dependencies) |
| Install scripts | no |
| GitHub stars | 44 |
| Author | 不会飞的羊 |
| Maintainers | sadne |
| Keywords | passport, auth, cas |

## Links

- npm: https://www.npmjs.com/package/passport-cas
- Repository: https://github.com/sadne/passport-cas
- Issues: https://github.com/sadne/passport-cas/issues
- npm.io page: https://npm.io/package/passport-cas

## Dependencies (3)

- [xml2js](https://npm.io/package/xml2js.md) 0.4.4
- [node-uuid](https://npm.io/package/node-uuid.md) 1.4.1
- [underscore](https://npm.io/package/underscore.md) 1.6.0

## Alternatives

- [@clerk/clerk-expo](https://npm.io/package/@clerk/clerk-expo.md) — 133.6K weekly downloads
- [@pothos/plugin-authz](https://npm.io/package/@pothos/plugin-authz.md) — 12.4K weekly downloads
- [@bounded-sh/client](https://npm.io/package/@bounded-sh/client.md) — 3.2K weekly downloads
- [@luigi-project/plugin-auth-oauth2](https://npm.io/package/@luigi-project/plugin-auth-oauth2.md) — 2.3K weekly downloads
- [@nocobase/plugin-verification](https://npm.io/package/@nocobase/plugin-verification.md) — 2.0K weekly downloads

## Recent versions

- 0.1.1 (latest) — 2017-03-05
- 0.1.0 — 2015-06-30
- 0.0.3 — 2014-08-22
- 0.0.1 — 2014-01-09

## 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](http://opensource.org/licenses/MIT)

---
_Source: https://npm.io/package/passport-cas · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
