使用passport-saml和Koa?

时间:2016-09-23 16:59:40

标签: passport.js koa passport-saml

有没有人找到使用护照-Saml与KoaJS的方法?我设法确定了这个问题 - passport-saml使用了res.send,这在koa中是不可用的,但到目前为止,我没有找到解决方法。< / p>

1 个答案:

答案 0 :(得分:3)

我今天想知道同样的事情,偶然发现了这篇文章。没有基于koa的passport-saml实现,但是,有一个名为koa-passport的简洁中间件模块向后兼容较早的护照策略,如passport-saml。它使用模拟快速请求对象来弥合您使用这些基于快速的中间件所遇到的一些差距。

以下是设置的片段(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;

登录和回拨路线

// 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('/');
    }
);