0.3.1 • Published 4 years ago

passport-cerbere v0.3.1

Weekly downloads
2
License
AGPL-3.0-or-later
Repository
github
Last release
4 years ago

passport-cerbere

Passport strategy utilisant le serveur d'authentification Cerbere. Il supporte les protocoles CAS 2.0 et SAML 1.1.

Build Publish npm version

Installation

npm install passport-cerbere

Configuration

var cerbereStrategy = new CerbereStrategy(
  {
    casURL:
      "https://authentification.din.developpement-durable.gouv.fr/cas/public",
    serviceURL: "http://127.0.0.1:3000",
    propertyMap: {
      id: "UTILISATEUR.ID",
      name: {
        civilite: "UTILISATEUR.CIVILITE",
        givenName: "UTILISATEUR.PRENOM",
        familyName: "UTILISATEUR.NOM"
      },
      emails: [{key: "UTILISATEUR.MEL", type: 'principal'}, {key: "UTILISATEUR.MELPR", type: 'professionnel'}],
      unite: "UTILISATEUR.UNITE",
      telephones: [{key: "UTILISATEUR.TEL_FIXE", type: 'fixe'}],
      adresses: [{key: {town: "UTILISATEUR.ADR_VILLE", street: 'UTILISATEUR.ADR_RUE', streetcode: 'UTILISATEUR.ADR_CODEPOSTAL', country: 'UTILISATEUR.ADR_PAYS_NOM'}, type: 'principale'}, {key: {town: "ENTREPRISE.ADR_VILLE", street: 'ENTREPRISE.ADR_RUE', streetcode: 'ENTREPRISE.ADR_CODEPOSTAL', country: 'ENTREPRISE.ADR_PAYS_NOM'}, type: 'entreprise'}],
      organizations: [{key: {code: "ENTREPRISE.SIREN", name: 'ENTREPRISE.RAISON_SOCIALE'}, type: 'principale'}]
    }
  },
  // This is the `verify` callback
  function(username, profile, done) {
    User.findOrCreate(username, profile, function(
      err,
      user
    ) {
      user = { id: username, profile: profile };
      done(err, user);
    });
  }
);
passport.use(cerbereStrategy);

User.findOrCreate est une fonction à implémenter pour les besoins spécifiques de l'application. Elle permet de contrôler les droits selon une logique métier: profils, etc.

Requêtes d'authentification

Utilisez passport.authenticate(), spécifiez la stratégie cerbere, dans les requêtes d'authentification.

Par exemple, en tant que middleware dans Express:

app.get("/login", function(req, res, next) {
  passport.authenticate("cerbere", 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);
});

app.get("/logout", function(req, res) {
  var returnURL = "http://127.0.0.1:3000/";
  cerbereStrategy.logout(req, res, returnURL);
});

Usage

Voir un exemple complet.