Кто-нибудь нашел способ использовать паспорт-saml с KoaJS? Мне удалось идентифицировать проблему - паспорт-saml использует res.send, который недоступен в koa, но мне пока не удастся найти способ вокруг него.Использование паспорт-saml и Koa?
0
A
ответ
2
Мне было интересно то же самое сегодня и наткнулся на этот пост. Нет никакой реализации паспорт-saml на основе koa, однако есть аккуратный модуль промежуточного программного обеспечения под названием 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;
Вход и Callback маршруты
// 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('/');
}
);