2016-09-23 4 views
0

Hat jemand einen Weg gefunden, Pass-Saml mit KoaJS zu verwenden? Ich habe es geschafft, das Problem zu identifizieren - Pass-Saml verwendet res.send, die nicht in Koa verfügbar ist, aber ich habe kein Glück, einen Weg um es so weit zu finden ..Mit Pass-saml und Koa?

Antwort

2

Ich frage mich das gleiche heute und stolperte über diesen Posten. Es gibt keine koa-basierte Pass-Sampl-Implementierung, jedoch gibt es ein ordentliches Middleware-Modul namens koa-passport, das abwärtskompatibel zu älteren Pass-Strategien wie passport-saml ist. Es verwendet ein Mock-Express-Request-Objekt, um einige der Lücken zu überbrücken, die Sie mit diesen Express-basierten Middlewares begegnen.

Hier ist ein Ausschnitt aus der Einrichtung (full sample here on github):

// passport.js 
const Saml = require('passport-saml').Strategy, 
     passport= require('koa-passport'); 

passport.serializeUser((user, done) => done(null, user)); 
passport.deserializeUser((user, done) => done(null, user)); 

passport.use(new Saml(config, (profile, done) => done(null, profile) }); 
module.exports = passport; 

Anmeldung und Rückruf Routen

// app.js 
const app = Koa(); 

app.keys = ['abc']; 

app.use(session({key: 'test.cookie'})); 
app.use(passport.initialize()); 
app.use(passport.session()); 

router.get('/login', passport.authenticate('saml', 
    { 
     successRedirect: '/', 
     failureRedirect: '/login' 
    }) 
); 

router.post('/login/callback', passport.authenticate('saml', 
    { 
     failureRedirect: '/', 
     failureFlash: true 
    }), 
    function *consume() { 
     this.redirect('/'); 
    } 
);