私はMeteorプロジェクトでpassport.jsを実装しようとしています。passport.jsとMeteorの統合
まず、組織の側でLDAPを使用する認証システムを構築しています。 yはShibbolethのIdentity Provider、http://shibboleth.net/products/identity-provider.htmlを購入しており、Webアプリケーションに存在する認証フレームワークとしてpassport-samlを使用したいと考えています。私はこのgitチュートリアルhttps://github.com/bergie/passport-samlと公式のpassport.jsチュートリアルに従っており、Meteorのサーバー側でpassport.jsのメソッドを実装しました。
Meteor.startup(function() {
var require = Npm.require;
passport = require('passport');
var SamlStrategy = require('passport-saml').Strategy;
passport.use(new SamlStrategy(
{
path: '/login/callback',
entryPoint: 'https://openidp.feide.no/simplesaml/saml2/idp/SSOService.php',
issuer: 'passport-saml'
},
function(profile, done) {
findByEmail(profile.email, function(err, user) {
if (err) {
return done(err);
}
return done(null, user);
});
}
));
Meteor.Router.add('/login/callback', 'POST', function(req, res){
passport.authenticate('saml', { failureRedirect: '/', failureFlash: true });
res.redirect('/');
});
Meteor.Router.add('/login', 'POST', function(req, res){
passport.authenticate('saml', { failureRedirect: '/', failureFlash: true });
res.redirect('/');
});
var app = __meteor_bootstrap__.app;
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
});
私の質問は、パスポートでユーザー情報を送信する方法です。これは、passport.useの関数を介してプロファイルオブジェクトを渡すことによって行われますか?
ありがとうございました。どのくらいのコードを表示する必要があるのか分かりません。ただコメントを削除して、この投稿を改善します。